【数据操作与可视化】Pandas数据处理-其他操作

【数据操作与可视化】Pandas数据处理-其他操作

一、不同df进行拼接

有时我们需要把不同的df合在一起,这时就要用到dataframe的拼接操作。

python 复制代码
import pandas as pd
df1 = pd.read_excel(r'数据拼接.xlsx')    # 3行4列
df2 = pd.read_excel(r'数据拼接.xlsx', sheet_name='data2')   # 4行3列
pd.concat([df1, df2])  # 默认竖向拼接
pd.concat([df1, df2], ignore_index=True)   # 重新自动设置索引
pd.concat([df1, df2], axis=1)   # 设置横向拼接
# 练习:利用concat方法在df中间插入一条记录
# 思路:先把原来的df拆分成两部分,然后再把它们和新的那行拼接在一起即可
df = pd.read_excel('数值操作.xlsx')
df_first = df[:5]
df_second = df[5:]
df_new = pd.DataFrame({'订单编号':'AAAA',
                       '客户姓名': 'billy',
                       '唯一识别码': 999,
                       '购买日期': '2020-09-10',
                       '年龄': 18,
                       '消费金额': 1000}, index=[0])
pd.concat([df_first, df_new, df_second], ignore_index=True)

二、数据分组

分组操作相当于数据库中的group by操作,通常用于对数据进行统计操作

bash 复制代码
# 1. 
df = pd.read_excel('数据分组.xlsx')
print(df)
# 通过group by指定分组依据。注意,统计方法后面不能加参数,比如count后面不能有参数,否则报错
print(df.groupby('学生ID').count())
# print(df.groupby('学生ID').count('科目'))  # 报错
# sum操作只针对于float,int等数值类型的列才进行操作
print(df.groupby('学生ID').sum())
# 按照多列来进行分组,如果分组后面没有指定列名,默认会对所有列进行count操作
print(df.groupby(['学生ID', '科目']).count())
# 分组后面的列叫统计列。,可以在group by后面指定列名。如果要统计的列有多列的话,必须加[]括起来
print(df.groupby(['学生ID'])[['成绩']].count())   # 学生ID分组后,只统计成绩这列
print(df.groupby(['学生ID'])[['成绩', '授课老师']].count())# 统计成绩和授课老师两列
# aggregate方法的使用, 它可以同时在指定的统计列上做不同的统计计算,也就是想同时进行多种统计计算时,可以使用aggregate方法来实现
print(df.groupby('所在年级')[['成绩', '年龄']].aggregate(['mean', 'max']))
# 分组后再对不同的字段采用不同的统计方法
print(df.groupby('所在年级').aggregate({
    '科目': 'count',   # 针对科目这列计数
    '成绩': 'mean',
    '年龄': 'max'
}))
print(df.groupby('所在年级').aggregate({
    '科目': 'count',   
    '成绩': 'mean',
    '年龄': ['max', 'median']   # 对某一列进行多种统计
}))

三、数据导出

在pandas中要将df导出为其他格式的文件,只需要统一调用pandas的to_xxx()方法即可。

python 复制代码
# 在工作路径导出为excel文件。注意,有些电脑上可能会出现缺乏openyxl模块导致的错误,如果报错的话可以自己用pip装一下。
df1.to_excel('test.xlsx')
# 指定sheet名称
df1.to_excel('test.xlsx', sheet_name='新sheet')
# 去掉默认的索引
df.to_excel(r'导出数据.xlsx', index = False)
# 设置要导出的列
df.to_excel(r'导出数据.xlsx', index=False, columns=['列2', '列3'])
# 导出为csv文件时,含有中文必须加encoding参数
df.to_csv('测试保存csv.csv', encoding='utf_8_sig')  # encoding可以设置为utf_8_sig和gbk
相关推荐
A__tao2 小时前
Elasticsearch Mapping 一键生成 Java 实体类(支持嵌套 + 自动过滤注释)
java·python·elasticsearch
研究点啥好呢2 小时前
Github热门项目推荐 | 创建你的像素风格!
c++·python·node.js·github·开源软件
迷藏4942 小时前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源
明日清晨3 小时前
python扫码登录dy
开发语言·python
bazhange3 小时前
python如何像matlab一样使用向量化替代for循环
开发语言·python·matlab
人工干智能3 小时前
科普:python中你写的模块找不到了——`ModuleNotFoundError`
服务器·python
unicrom_深圳市由你创科技4 小时前
做虚拟示波器这种实时波形显示的上位机,用什么语言?
c++·python·c#
小敬爱吃饭4 小时前
Ragflow Docker部署及问题解决方案(界面为Welcome to nginx,ragflow上传文件失败,Docker中的ragflow-cpu-1一直重启)
人工智能·python·nginx·docker·语言模型·容器·数据挖掘
宸津-代码粉碎机4 小时前
Spring Boot 4.0虚拟线程实战调优技巧,最大化发挥并发优势
java·人工智能·spring boot·后端·python
知行合一。。。4 小时前
Python--04--数据容器(集合)
python