教人玩Pandas数据分析,现学现卖,差点翻船

2024-07-30 19:07:42 浏览数 (1)

先说下整体感受:Pandas本身非常强大,上手也不难。正是因为上手容易,Pandas又提供了许多类似的实现方式,反而容易让人举三反一,所以学习过程中要以目标为导向,边学边用,才能事半功倍。

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数据清洗。

0 人点赞