Pandas核心数据结构就2个,一个是Series,一个是DataFrame。前者对应Excel的一列,后者对应着整个sheet页表格。
通过字典创建DataFrame数据,并保存到Excel。从第一步就开始翻船了,因为我本地自己创建了Excel文件test0.xlsx,所以运行到11行代码时没问题,而好友没有手动创建Excel文件,所以又回头补了5~9行代码,判断文件是否存在,不存在先创建。
代码语言:javascript复制import os.path
import pandas as pd
df = pd.DataFrame({'computer': [65, 80, 77], 'math': [100, 98, 99]}, index=['star', 'moon', 'sun'])
file_path = r'../myfiles/test0.xlsx'
if not os.path.exists(file_path):
empty = pd.DataFrame()
with pd.ExcelWriter(file_path, mode='w') as writer:
empty.to_excel(writer)
with pd.ExcelWriter(file_path, mode='a', engine='openpyxl', if_sheet_exists='replace') as writer:
df.to_excel(writer, sheet_name='star')
df数据如下图:
有了df就可以针对数据进行增删改查操作了,操作前要对数据整体结构有个清晰的认识,df有三个维度:列索引,行索引,数据,可以看到df包含2列3行。
代码语言:javascript复制print(df.columns)
print(df.index)
print(df.values)
运行结果如下图:
给df新增一列,要注意使用[ ]针对列进行索引操作,因为列代表着整个数据表格的维度,而行代表的是在每个维度下的一组数据的呈现。
代码语言:javascript复制df['PE'] = [84,66,58]
运行结果如下图:
下面使用列索引进行数据过滤选取返回df,选取computer列值大于80的数据;使用loc方法通过行索引标签定位行数据,通过行列标签定位指定单元格数据;使用mean方法进行均值计算。
代码语言:javascript复制computer_ = df[df['computer'] >= 80]
star_ = df.loc['star']
df.loc['star', 'PE'] = 100
df['mean'] = df.mean(axis='columns')
运行结果如下:
还有些df比较常用的方法head(),tail(),info(),describe()等就不堆积了,有了本文的基本操作讲解,pandas就算是上手了,下一篇继续学习pandas数据清洗。