Zhong__Pandas操作Excel表数据

时间:2023.10.16

环境:Windows 10 python3.12

目的:Pandas简单使用

说明:

作者:Zhong QQ交流群:121160124 欢迎加入!

安装

pandas/openpyxl

python 复制代码
pip3 install -i https://pypi.douban.com/simple pandas
pip3 install -i https://pypi.douban.com/simple openpyxl

pandas中的数据结构和Excel文档属性的对应关系

pandas处理Excel文件默认行和列的起始索引都是0

属性

pd.set_option()

可设置输出对齐方式、显示行、列等等属性

设置输出右对齐

pd.set_option('display.unicode.east_asian_width', True)

Series

一维数组

DataFrame

矩阵数组

读取文件

读取Excel文件

python 复制代码
import pandas as pd

# 要处理的原始Excel表文件
file_path = r"./demo.xlsx"

# 读取Excel文件
df = pd.read_excel(io=file_path, header=None, sheet_name="Sheet1")

io: 指定要读取的Excel文件所在的路径

header: 0(第一行为标题 其它行为数据) 1(第二行为标题 第一行数据默认丢弃 其它行为数据)None(所有行为数据行)

sheet_name: 指定Sheet页的名称 可为索引(默认起始0) 也可以指定Sheet页名称

convert_float: 将所有的数值型字段转换为浮点型字段

usecols: 选择读取其中的列

读取csv

pd.read_csv(...)

读取html

pd.read_html(...)

读取json

pd.read_json(...)

读取sql

pd.read_sql(...)

及其它支持的类型文件

索引获取数据

使用​​ ​​​/loc\[\]​​​/iloc /ix ​​

数据框。\[\];此函数也称为索引运算符

Dataframe.loc :此函数用于标签。

Dataframe.iloc :此函数用于位置或基于整数

Dataframe.ix\[\]:此函数用于基于标签和整数

获取Sheet页数据行数和列数

python 复制代码
# 获取行数
print("number of rows is: ", df.shape[0])

# 获取列数
print("number of columns is: ", df.shape[1])

# 行、列
print("number of rows and columns is: ", df.shape)

所有行索引转为列表

python 复制代码
df.index.tolist()

删除数据

python 复制代码
df.drop(axis=0, index=ls[2:], inplace=True)

axis: 0为行 1为列

index: 要删除的索引 可为int 可为列表 可为切片

inplace: True 替换原本的内容 False 源数据不变

表格数据去重

python 复制代码
df = pd.read_excel(r"./demo.xlsx", sheet_name="Sheet1", usecols=['机构', '日期', '部门'])

df_new = df.drop_duplicates(subset=['机构', '日期', '部门'], keep='first', inplace=False)

subset: 选择以列标题字段组合的数据去重 相同字段的相同数据去重

keep: 重复数据保留第一条/最后一条

inplace:默认为False. True:直接在原数据上删除重复项 False: 删除重复项后返回副本

分组后保存

以列标题为条件分组

python 复制代码
# 分组
grouped = df.groupby(['机构'], group_keys=False).apply(lambda x:x)

grouped.to_excel("ok.xlsx", sheet_name='Sheet1', index=False)

groupby("标题1", "标题2") 可以指定多个标题分组数据

group_keys 为False可以使分组字段不做为索引 为True分组字段将索引

apply(lambda x:x)转换DataFrameGroupBy object为DataFrame object 可进行存储

如果 group_keys=True index=True 那么将会保存源数据的分组键为索引 数据索引为源数据索引的数据

聚合计算

平均值

最小值

最大值

数量统计

中位数

总和

排序

python 复制代码
# 修改源数据 源索引不变
df.sort_values(by="机构", ascending=True, inplace=True)

# 不修改源数据 将修改后的数据赋值
df1 = df.sort_values(by="机构", ascending=True, inplace=False)

by="title1", "title2", ... 可指定多列排序

ascending默认升序 False降序 ascending=False, True对多个标题分别指定排序的规则

inplace默认False 不改变df数据 将排序后的数据赋值df1 True修改源数据 源索引不变

相关推荐
benchmark_cc14 小时前
实时行情和分钟 K 线应该如何配合使用?从信号计算到交易决策的完整分析
大数据·python·数据分析·pandas·量化交易·股票数据·quantdash
quantdash_cc1 天前
Pandas 处理分钟级股票行情:从原始数据清洗到 K 线聚合
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
烂蜻蜓1 天前
Pandas入门教程(四):Series数据结构——创建、索引与常用方法
数据结构·pandas
benchmark_cc1 天前
量化项目启动时,应该先设计数据接口还是先编写策略?从系统架构角度做出正确选择
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
烂蜻蜓2 天前
Pandas入门教程(三):安装与环境配置——运行第一个DataFrame
pandas
烂蜻蜓3 天前
Pandas入门教程(一):初识Pandas——数据分析的利器
数据挖掘·数据分析·pandas
benchmark_cc3 天前
实时行情系统如何避免无意义的重复请求?从请求去重到缓存设计
大数据·开发语言·python·pandas·量化交易·股票数据·quantdash
benchmark_cc3 天前
量化系统架构设计:为什么应该将数据获取与策略逻辑解耦?
python·数据分析·pandas·量化交易·股票数据·quantdash
2601_966949653 天前
如何判断实时行情数据是否已经更新?从时间戳、交易时段到行情有效性
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
Helix2504 天前
Python数据分析实战:Pandas清洗豆瓣短评与情感分析完整指南
python·pandas·数据清洗·情感分析··snownlp·文本数据处理