Pandas:数据处理的得力助手
说到数据分析,我最离不开的就是Pandas这个库了。它像Excel一样直观,又比Excel强大很多倍。处理上百万行的数据?小菜一碟!数据清洗、转换、分析,样样都不在话下。
认识DataFrame
DataFrame是Pandas最重要的数据结构,你可以把它想象成一张Excel表格。每一列都有自己的名字,每一行都有自己的索引。看段代码就明白了: import pandas as pd
# 创建一个简单的DataFrame
data = {
'姓名': ['小明', '小红', '小张'],
'年龄': [18, 20, 19],
'成绩': [85, 92, 78]
}
df = pd.DataFrame(data)
print(df)
温馨提示:创建DataFrame时,记得给列名取个好记的名字,别整些a、b、c这种,过两天自己都看不懂是啥意思。
数据读取有门道
读取数据文件是分析的第一步。Pandas支持各种格式,CSV、Excel、JSON都不在话下: # 读取CSV文件
df = pd.read_csv('data.csv')
# 读取Excel文件
df = pd.read_excel('data.xlsx')
有个坑得提醒下,读取中文内容时可能会出现乱码。加个encoding参数就搞定了:
df = pd.read_csv('data.csv', encoding='utf-8')
数据处理真好玩
数据处理最常用的操作就是筛选和排序。用Pandas做这事简直不要太爽: # 筛选年龄大于18的数据
df[df['年龄'] > 18]
# 按成绩排序,ascending=False表示降序
df.sort_values('成绩', ascending=False)
我还特别喜欢用 groupby 进行分组统计,感觉特别解放双手:
# 按年龄分组计算平均成绩
df.groupby('年龄')['成绩'].mean()
缺失值处理
现实世界的数据总是不那么完美,经常会遇到缺失值。Pandas用 NaN (Not a Number)表示缺失值: # 检查缺失值
df.isnull().sum()
# 填充缺失值
df.fillna(0) # 用0填充
df.fillna(method='ffill') # 用前面的值填充
温馨提示:处理缺失值前最好先了解下数据的实际含义,blindly(盲目)填充可能会带来意想不到的问题。
数据运算
Pandas的运算符重载很强大,可以直接对整列数据进行运算: # 所有成绩加10分
df['成绩'] = df['成绩'] + 10
# 计算每个人的及格情况
df['是否及格'] = df['成绩'] >= 60
对于一些复杂的计算,可以用 apply 函数:
def 计算等级(分数):
if 分数 >= 90:
return 'A'
elif 分数 >= 80:
return 'B'
else:
return 'C'
df['等级'] = df['成绩'].apply(计算等级)
搞数据分析不是一朝一夕的事,慢慢来,多练习。光看不练假把式,建议你边学边实践。我就是这样一步步摸索过来的,踩了不少坑,但每踩一个坑都是一次成长。记住,DataFrame 是你的好朋友, groupby 是你的左膀右臂,多琢磨琢磨这俩,够你用很久了。