DataLearner 标志DataLearnerAI
最新AI资讯
大模型排行榜
大模型评测基准
大模型列表
大模型对比
资源中心
工具
语言中文
DataLearner 标志DataLearner AI

专注大模型评测、数据资源与实践教学的知识平台,持续更新可落地的 AI 能力图谱。

产品

  • 评测榜单
  • 模型对比
  • 数据资源

资源

  • 部署教程
  • 原创内容
  • 工具导航

关于

  • 关于我们
  • 隐私政策
  • 数据收集方法
  • 联系我们

© 2026 DataLearner AI. DataLearner 持续整合行业数据与案例,为科研、企业与开发者提供可靠的大模型情报与实践指南。

隐私政策服务条款
  1. 首页/
  2. 博客列表/
  3. 博客详情

pandas的一些使用技巧

2019/03/27 21:16:54
3,101 阅读
pandasPython

        这两天用pandas做数据分析时学习到一些技巧,在这里记录下来备以后使用。

目录

1 将从MySQL数据库中查询的结果转换为DataFrame类型

2 使用groupby函数以某一列为键计算另一列的平均值

3 使用lambda表达式执行逐元素操作

4 使用reset_index函数还原索引

5 使用head函数查看DataFrame中的前几条样本

6 使用shape属性查看DataFrame对象的形状

7 使用columns属性查看和修改DataFrame对象的列信息

8 使用merge函数进行两个DataFrame对象的连接

9 使用drop函数删除某列

10 使用concat对两个DataFrame对象进行拼接

11 使用drop_duplicates函数剔除重复样本

12 将DataFrame对象写入数据库

1 将从MySQL数据库中查询的结果转换为DataFrame类型 df1 = pd.DataFrame(list(results1), columns=['user_id', 'car_id'], dtype=np.int)         注意这里要先把查询的结果用list()函数转化一下。

2 使用groupby函数以某一列为键计算另一列的平均值 import pandas as pd

车型维度评分信息

df1 = pd.DataFrame({'car_id': ['221', '222', '223', '224', '225', '227', '221'], 'feature1': [1, 2.9333, 3, 4, 5, 6.3, 3], 'feature2': [5, 4, 3, 2, 1, 9, None]}) print('df1:') print(df1)

使用groupby函数执行聚合操作

df2 = df1.groupby('car_id').mean() print('df2:') print(df2)         结果如下:

df1: car_id feature1 feature2 0 221 1.0000 5.0 1 222 2.9333 4.0 2 223 3.0000 3.0 3 224 4.0000 2.0 4 225 5.0000 1.0 5 227 6.3000 9.0 6 221 3.0000 NaN df2: feature1 feature2 car_id 221 2.0000 5.0 222 2.9333 4.0 223 3.0000 3.0 224 4.0000 2.0 225 5.0000 1.0 227 6.3000 9.0 3 使用lambda表达式执行逐元素操作

保留两位小数

f = lambda x: '%.2f' % x

使用aplymap函数执行逐元素操作

df3 = df2.applymap(f) print('df3:') print(df3)         结果如下:

df3: feature1 feature2 car_id 221 2.00 5.00 222 2.93 4.00 223 3.00 3.00 224 4.00 2.00 225 5.00 1.00 227 6.30 9.00 4 使用reset_index函数还原索引         对于使用groupby函数聚合后的DataFrame对象,其用于聚合的键会自动被设定为Index,我们可以使用reset_index函数将其还原为column,以df3为例:

使用reset_index函数还原索引

df4 = df3.reset_index() print('df4:') print(df4)         结果如下:

df4: car_id feature1 feature2 0 221 2.00 5.00 1 222 2.93 4.00 2 223 3.00 3.00 3 224 4.00 2.00 4 225 5.00 1.00 5 227 6.30 9.00         与之对应的是set_index函数,我们可以使用它将某一列或某几列设置为索引。

5 使用head函数查看DataFrame中的前几条样本 print('df4的前两条样本:') print(df4.head(2)) print('df4的前5条样本:') print(df4.head())         结果如下:

df4的前两条样本: car_id feature1 feature2 0 221 2.00 5.00 1 222 2.93 4.00 df4的前5条样本: car_id feature1 feature2 0 221 2.00 5.00 1 222 2.93 4.00 2 223 3.00 3.00 3 224 4.00 2.00 4 225 5.00 1.00 6 使用shape属性查看DataFrame对象的形状 print('df4的形状:') print(df4.shape) df4的形状: (6, 3) 7 使用columns属性查看和修改DataFrame对象的列信息 print('df4的列信息:') print(df4.columns) df4.columns = ['car_id', 'f1', 'f2'] print('更改列名之后的df4:') print(df4) print('更改列名之后df4的列信息:') print(df4.columns)         结果如下:

df4的列信息: Index(['car_id', 'feature1', 'feature2'], dtype='object') 更改列名之后的df4: car_id f1 f2 0 221 2.00 5.00 1 222 2.93 4.00 2 223 3.00 3.00 3 224 4.00 2.00 4 225 5.00 1.00 5 227 6.30 9.00 更改列名之后df4的列信息: Index(['car_id', 'f1', 'f2'], dtype='object') 8 使用merge函数进行两个DataFrame对象的连接 df1 = pd.DataFrame({'user_id': ['111', '111', '112', '113', '113', '114'], 'car_id': ['221', '222', '223', '224', '225', '227']}) print('df1:') print(df1) df2 = pd.DataFrame({'car_id': ['221', '222', '223', '224', '225', '227', '229'], 'target_id': ['223', '221', '225', '225', '227', '221', '223']}) print('df2:') print(df2) df5 = pd.merge(df1, df2, on='car_id', how='left', left_index=True) # 左连接 print('df5:') print(df5)         结果如下:

df1: user_id car_id 0 111 221 1 111 222 2 112 223 3 113 224 4 113 225 5 114 227 df2: car_id target_id 0 221 223 1 222 221 2 223 225 3 224 225 4 225 227 5 227 221 6 229 223 df5: user_id car_id target_id 0 111 221 223 1 111 222 221 2 112 223 225 3 113 224 225 4 113 225 227 5 114 227 221 9 使用drop函数删除某列 df5 = df5.drop(['car_id'], axis=1) print('新的df5:') print(df5)         结果如下:

新的df5: user_id target_id 0 111 223 1 111 221 2 112 225 3 113 225 4 113 227 5 114 221 10 使用concat对两个DataFrame对象进行拼接 df1 = pd.DataFrame({'user_id': ['111', '111', '112', '113', '113', '114'], 'car_id': ['221', '222', '223', '224', '225', '227']}) print('df1:') print(df1) df6 = pd.concat([df1, df5], axis=0) # 沿着列方向拼接 print('df6:') print(df6)         结果如下:

df1: user_id car_id 0 111 221 1 111 222 2 112 223 3 113 224 4 113 225 5 114 227 df6: user_id car_id 0 111 221 1 111 222 2 112 223 3 113 224 4 113 225 5 114 227 0 111 223 1 111 221 2 112 225 3 113 225 4 113 227 5 114 221 11 使用drop_duplicates函数剔除重复样本 df6.drop_duplicates(subset=['user_id', 'car_id'], keep='first', inplace=True) # 删除重复的行 print('剔除重复样本之后的df6:') print(df6)         结果如下:

剔除重复样本之后的df6: user_id car_id 0 111 221 1 111 222 2 112 223 3 113 224 4 113 225 5 114 227 0 111 223 2 112 225 4 113 227 5 114 221 12 将DataFrame对象写入数据库         DataFrame对象为:

df8 feature1 feature2 user_id 111 2.64 4.00 112 4.00 2.00 113 5.10 4.00 114 4.15 7.00         使用以下语句将其写入数据库:

写入网络数据库

connect = create_engine('mysql+pymysql://user:passwd@ip:port/database_name?charset=utf8') pd.io.sql.to_sql(df8, 'table_name', connect, schema='database_name', if_exists='append') print('完成!!!')         效果截图如下:

        待续...

        谢谢!

DataLearner 官方微信

欢迎关注 DataLearner 官方微信,获得最新 AI 技术推送

DataLearner 官方微信二维码
返回博客列表

相关博客

  • 是否需要使用NumPy代替Pandas处理数据以提高性能?
  • PandasTutor——一个用于可视化pandas操作的神器
  • pandas的get_dummies方法在机器学习中的应用及其陷阱
  • pandas.DataFrame.to_csv和dask.dataframe.to_csv在windows下保存csv文件出现多个换行结果
  • Pandas的DataFrame选择行或者列的注意事项
  • PyTorch 2.0发布——一个更快、更加Pythonic和灵活的PyTorch版本,让Tranformer运行更快!
  • 0基础安装搭建Visual Studio Code开发环境——Python开发环境
  • KerasCV——一个新的简单易用的计算机视觉(CV)算法库

热门博客

  • 1Dirichlet Distribution(狄利克雷分布)与Dirichlet Process(狄利克雷过程)
  • 2回归模型中的交互项简介(Interactions in Regression)
  • 3贝塔分布(Beta Distribution)简介及其应用
  • 4矩母函数简介(Moment-generating function)
  • 5普通最小二乘法(Ordinary Least Squares,OLS)的详细推导过程
  • 6使用R语言进行K-means聚类并分析结果
  • 7深度学习技巧之Early Stopping(早停法)
  • 8手把手教你本地部署清华大学的ChatGLM-6B模型——Windows+6GB显卡本地部署