前言:在数据分析领域,Python 的 Pandas 库堪称得力助手。它不仅拥有高效的数据处理能力,还能与 NumPy 完美配合——后者强大的数值计算功能为 Pandas 提供了坚实的技术基础。
目录
Pandas数据分析实战:解锁数据处理的高效之道
最近在学习数据分析的过程中,我发现 Pandas 这个工具真的是太实用了!今天就想跟大家分享一下我在学习 Pandas 过程中总结的一些基础操作和实战经验。
数据创建与查看:第一步总是最难的?
刚开始接触数据分析时,创建和查看数据这一步就让我琢磨了很久。后来发现 Pandas 的 DataFrame 简直就是为了解决这个问题而生的。你可以用字典轻松创建一个数据表,像这样:
import numpy as np
import pandas as pd
data = {'名字': ['张三', '李四', '王五', '赵六'],
'年龄': [25, 30, 35, 40],
'城市': ['北京', '上海', '广州', '深圳']}
df = pd.DataFrame(data)
print("原始数据:")
print(df)
是不是很方便?不过别急,这还只是开始。查看数据的时候,我发现 head()
和 tail()
简直是拯救了我这个数据量大的时候容易犯迷糊的人。再配上 info()
,数据的底细能摸得一清二楚。
数据选择与修改:精准操作的奥秘
在数据选择上,我发现 Pandas 的方式特别灵活。按列选择直接用列名就行,简单粗暴。按行选择呢,iloc
和 loc
各有千秋,iloc
按位置索引,loc
按标签索引,用起来得心应手。
print("\n选择索引为1的行:")
print(df.iloc[1])
print("\n选择索引为2的行:")
print(df.loc[2])
至于修改数据,刚开始我还担心会很复杂。结果发现批量修改一列简单得很,直接重新赋值就行了。要是只改某个位置的数据,用 at
方法也很方便。
print("\n修改'年龄'列的值:")
df['年龄'] = [26, 31, 36, 41]
print(df)
print("\n修改索引为1的行,年龄为32:")
df.at[1, '年龄'] = 32
print(df)
这些操作让我感觉对数据的掌控力满满。
数据筛选:大海捞针的必备技能
数据筛选这一步,我感觉就像是在大海里捞针。不过 Pandas 让这个过程变得简单了。筛选符合条件的数据,直接用条件表达式就能搞定。
print("\n筛选年龄大于30的人:")
print(df[df['年龄'] > 30])
print("\n筛选城市为'北京'或'上海'的人:")
print(df[(df['城市'] == '北京') | (df['城市'] == '上海')])
通过这些筛选,我能快速把想要的数据挑出来,效率提升不少。
数据排序与聚合:深度分析的利器
数据分析嘛,肯定少不了排序和聚合。排序的话,sort_values()
让数据能按照指定列从小到大或者降序排列,特别直观。
print("\n按年龄从小到大排序:")
print(df.sort_values(by='年龄'))
print("\n按年龄降序排序:")
print(df.sort_values(by='年龄', ascending=False))
聚合操作更是一绝。用 groupby
按城市统计平均年龄,一眼就能看出不同城市的年龄分布情况。
data_group = {'城市': ['北京', '北京', '上海', '上海', '广州', '广州'],
'年龄': [25, 30, 28, 35, 32, 40]}
df_group = pd.DataFrame(data_group)
print("\n按城市统计平均年龄:")
print(df_group.groupby('城市')['年龄'].mean())
这些操作让我对数据的理解更深入了。
数据合并与缺失值处理: perfection 的关键步骤
在实际项目里,数据来源往往很杂乱。数据合并和缺失值处理就成了关键。合并数据时,merge
方法能帮我们把不同来源的数据整合到一起。
df1 = pd.DataFrame({'名字': ['张三', '李四'],
'年龄': [25, 30]})
df2 = pd.DataFrame({'名字': ['李四', '王五'],
'工作': ['医生', '教师']})
print("\n按'名字'列合并两个DataFrame:")
print(pd.merge(df1, df2, on='名字', how='inner'))
print("\n外连接(包含所有名字):")
print(pd.merge(df1, df2, on='名字', how='outer'))
至于缺失值,填充或者删除都行,看具体需求。
data_with_nan = {'名字': ['张三', '李四', np.nan, '赵六'],
'年龄': [25, np.nan, 35, 40],
'城市': ['北京', '上海', '广州', np.nan]}
df_with_nan = pd.DataFrame(data_with_nan)
print("\n用'未知'填充名字的缺失值:")
print(df_with_nan['名字'].fillna('未知'))
print("\n用平均值填充年龄的缺失值:")
mean_age = df_with_nan['年龄'].mean()
print(df_with_nan['年龄'].fillna(mean_age))
print("\n删除有缺失值的行:")
print(df_with_nan.dropna())
这些步骤让数据更完整、更可用。
Pandas与NumPy的神仙组合
提到数据处理,就不得不提 Pandas 和 NumPy 的神仙组合。NumPy 的数值计算能力,为 Pandas 提供了强大的支持。比如用 NumPy 生成随机数据,再用 Pandas 分析,这种操作在实际项目里很常见。
data = np.random.randn(5, 3)
df_random = pd.DataFrame(data, columns=['A', 'B', 'C'])
print("\n随机生成的数据:")
print(df_random)
print("\n每列的平均值:")
print(df_random.mean())
总结
Pandas 作为数据分析的强大工具,为我们提供了丰富的功能和便捷的操作方式。无论是数据创建、查看、选择、修改,还是数据筛选、聚合、合并,都能轻松应对。结合 NumPy 的数值计算能力,Pandas 让我们在数据分析的道路上更加得心应手。希望这篇博客能为你打开数据分析的大门,帮助你在数据的海洋中探索出更多宝藏。