当前位置: 首页 > article >正文

4-pandas常用操作


前言


一、DataFrame修改index、columns

1.获取index       

df2 = pd.DataFrame(np.arange(9).reshape(3,3),index=['sh','cs','bj'],columns=['a','b','c'])
df2.index

2.修改index

df2.index = ['shanghai','changsha','beijing']

df2.columns = ['A','B','C'] # 注意赋值的顺序

3.批量修改,通过函数

def test_map(x):
    return x+'_ABC'

# rename()重命名
df2.rename(index=test_map,columns=test_map,inplace=True)  # 给index和columns都运用上面函数的规则.直接df2上进行修改


4.单独修改,通过字典

df2.rename(index={'shanghai_ABC':'shanghai'},columns={'c_ABC':'C'})

二、设置索引set_index

df3.set_index('销售日期',inplace=True)

三、表格合并

1.concat使用

拼接

pd.concat([df4,new_row],ignore_index=True)

pd.concat([df4,new_row],axis=1)

代码如下(示例):

import pandas as pd

data = {
    'Date': ['2023-09-01', '2023-09-02', '2023-09-03'],
    'Steps': [8000, 9000, 7500]  # 步数
}
df4 = pd.DataFrame(data)



new_data = {'Date':'2023-09-04','Steps':8000}
new_row = pd.DataFrame([new_data])

pd.concat([df4,new_row],ignore_index=True)

2.merge使用

pd.merge(user_df,buy_df,on='CustomerID',how='inner')  
how='inner'求交集  默认设置how='inner'

代码如下(示例):

import pandas as pd
user_data = {
    'CustomerID': [1, 2, 3, 4, 5],
    'Name': ['Rose', 'Bob', 'Jack', 'David', 'Lucy'],
    'Email': ['rose@163.com', 'bob@163.com', 'jack@163.com', 'david@163.com', 'lucy@163.com']
}
user_df = pd.DataFrame(user_data)


buy_data = {
    'CustomerID': [1, 2, 1, 3, 4, 3, 6],
    'OrderID': [101, 102, 103, 104, 105, 106, 107],
    'Product': ['A', 'B', 'C', 'D', 'E', 'A', 'B'],
    'Quantity': [2, 1, 3, 2, 4, 1, 2]
}
buy_df = pd.DataFrame(buy_data)


pd.merge(user_df,buy_df,on='CustomerID',how='inner')  # how='inner'求交集  默认设置how='inner'
pd.merge(user_df,buy_df,on='CustomerID',how='outer')  # how='outer' 求并集

pd.merge(user_df,buy_df,on='CustomerID',how='left')   # how='left'左连接

pd.merge(user_df,buy_df,on='CustomerID',how='right')  # how='right'右连接

3.join使用

基于索引合并
students_df.join(scores_df,on='StudentID',how='inner')  # 默认how='left'
代码如下(示例):
students_data = {
    'StudentID': [1, 2, 3, 4, 5],
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [18, 19, 18, 20, 19]
}
students_df = pd.DataFrame(students_data)
students_df.set_index('StudentID',inplace=True)

scores_data = {
    'StudentID': [1, 2, 3, 4, 5],
    'Math': [90, 85, 92, 78, 88],
    'Science': [88, 87, 91, 79, 90]
}
scores_df = pd.DataFrame(scores_data)
scores_df.set_index('StudentID',inplace=True)

students_df.join(scores_df,on='StudentID',how='inner')  # 默认how='left'

四,数据查询

1.df3.info()  # 查看数据类型

2.df3.query('A>2')  查询,引号内是筛选的条件

df3.query('(A>2) and (B<40)')

data = {
    'A': [1, 2, 3, 4, 5],
    'B': [10, 20, 30, 40, 50]
}
df3 = pd.DataFrame(data)


df3[df3['A']>2]


df3.query('A>2')  # 查询   条件一定要用引号   然后引号内是筛选的条件

3.isin

data = {
    'City': ['长沙', '北京', '上海', '成都', '云南'],
    'Population (millions)': [84, 39, 27, 23, 15]
}
df4 = pd.DataFrame(data)
df4[df4['City'].isin(['长沙','成都'])]  # df4['City'].isin(['长沙']) City列是否包含指定内容,isin()里接列表

五,拆包 

1.展开为多列

df5[['a','b','c']] = df5['B'].apply(pd.Series)
df5['B'].apply(pd.Series)
data = {
    'A': [1, 2, 3],
    'B': [['x', 'y'], ['p', 'q', 'r'], ['m']]
}
df5 = pd.DataFrame(data)


df5[['a','b','c']] = df5['B'].apply(pd.Series)

2. 展开多行

df5.explode('B')

六、拓展

1.添加整行数据
df3.loc[4] =['hadoop入门到精通','**',100,10]

2.regex=True启用正则

df6['价格'].replace({'\$':'',',':''},regex=True).astype(float)

3.jyputer中光标定位到函数内,shift+tab出参数提示


总结


http://www.kler.cn/a/452023.html

相关文章:

  • AWS Certified AI Practitioner 自学考试心得
  • 【求职面试】驾照的种类
  • STM32高级 以太网通讯案例2:搭建TCP服务端
  • VSCode 插件开发实战(七):插件支持了哪些事件,以及如何利用和监听这些事件
  • 778-批量删除指定文件夹下指定格式文件(包含子孙文件夹下的)
  • 39.在 Vue3 中使用 OpenLayers 导出 GeoJSON 文件及详解 GEOJSON 格式
  • LeetCode:257. 二叉树的所有路径
  • 一、后端到摄像头(监控摄像头IOT)
  • Docker--宿主机执行docker容器的命令
  • 【C++决策和状态管理】从状态模式,有限状态机,行为树到决策树(三):基于BT行为树实现复杂敌人BOSS-AI
  • MVC 参考手册
  • Flink中并行度和slot的关系——任务和任务槽
  • VUE前端实现防抖节流 Lodash
  • TCN-Transformer+LSTM多变量回归预测(Matlab)添加气泡图、散点密度图
  • “自动驾驶第一股” 图森未来退市转型:改名 CreateAI、发布图生视频大模型 “Ruyi”
  • 大模型-Dify使用笔记
  • QT安装5.15之后的版本和安装后添加其他漏装模块
  • mac中idea中英文版本切换
  • 金融数据可视化实现
  • mac启ssh服务用于快速文件传输
  • [创业之路-204]:《华为战略管理法-DSTE实战体系》- 5-平衡记分卡绩效管理
  • M系列芯片切换镜像源并安装 openJDK17
  • 【Mac】终端改色-让用户名和主机名有颜色
  • 一个C#开发的APP
  • MySQL最左匹配原则是什么
  • 【开发问题记录】eslint9 中 eslint 和 prettier冲突