Pandas是Python数据科学生态中的基石库,提供了高效、灵活的数据结构,使得数据清洗、分析和处理变得异常简单。对于刚入门的数据分析师或开发者,掌握其核心操作是迈向Python数据处理的第一步。本文将快速梳理Pandas最常用的基本操作,帮助你快速上手。
1. 导入Pandas与创建数据
通常,我们以pd作为Pandas的别名导入。
import pandas as pd
import numpy as np
创建数据最常用的结构是DataFrame,可以把它想象成一张Excel表格。
# 从字典创建
data = {'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'城市': ['北京', '上海', '广州']}
df = pd.DataFrame(data)
print(df)
2. 查看与了解数据
在对数据进行操作前,先了解它的概貌。
# 查看前n行,默认5行
df.head()
# 查看后n行
df.tail(3)
# 查看数据形状(行数,列数)
df.shape
# 查看列名
df.columns
# 查看索引
df.index
# 查看数据类型和非空值统计
df.info()
# 查看数值型列的统计摘要(计数、均值、标准差等)
df.describe()
3. 选择与筛选数据
这是数据分析中最频繁的操作之一。
选择列:
# 选择单列,返回Series
df['姓名']
# 选择多列,返回DataFrame
df[['姓名', '年龄']]
选择行(基于标签或位置):
# 使用.loc按标签索引(行名、列名)
df.loc[0] # 选择第一行所有列
df.loc[0, '姓名'] # 选择第一行的‘姓名’列
df.loc[[0, 2], ['姓名', '城市']] # 选择第1、3行的‘姓名’和‘城市’列
# 使用.iloc按整数位置索引(从0开始)
df.iloc[0] # 第一行
df.iloc[0, 1] # 第一行,第二列
df.iloc[0:2, 0:2] # 前两行,前两列(切片)
条件筛选:
# 筛选年龄大于28的数据
df[df['年龄'] > 28]
# 复合条件筛选:年龄大于25且城市为‘北京’
df[(df['年龄'] > 25) & (df['城市'] == ‘北京’)]
# 使用.isin()筛选特定值
df[df['城市'].isin(['北京’, ‘广州’])]
4. 处理缺失值与重复值
真实数据常常不完整,需要进行清洗。
处理缺失值:
# 检查缺失值
df.isnull()
df.isnull().sum() # 每列缺失值计数
# 删除含有缺失值的行
df.dropna()
# 删除整列为空的行
df.dropna(axis=1)
# 填充缺失值
df.fillna(0) # 用0填充
df['年龄'].fillna(df['年龄’].mean(), inplace=True) # 用均值填充该列
处理重复值:
# 检查重复行
df.duplicated()
# 删除重复行(保留第一条)
df.drop_duplicates()
# 删除基于某几列的重复行
df.drop_duplicates(subset=['姓名’])
5. 数据排序与修改
排序:
# 按‘年龄’列升序排序
df.sort_values(‘年龄’)
# 按‘年龄’降序排序
df.sort_values(‘年龄’, ascending=False)
# 按多列排序
df.sort_values([‘城市’, ‘年龄’])
修改数据:
# 重命名列
df.rename(columns={'姓名’: ‘name’, ‘年龄’: ‘age’}, inplace=True)
# 新增列(基于现有列计算)
df[‘出生年份’] = 2024 - df[‘年龄’]
# 替换值
df[‘城市’].replace({‘上海’: ‘Shanghai’}, inplace=True)
6. 分组与聚合
分组统计是数据分析的核心。
# 按‘城市’分组,并计算‘年龄’的平均值
df.groupby(‘城市’)[‘年龄’].mean()
# 多级分组与多重聚合
df.groupby(‘城市’).agg({‘年龄’: [‘mean’, ‘max’, ‘min’],
‘姓名’: ‘count’})
7. 简单合并数据
# 创建另一个DataFrame
df2 = pd.DataFrame({‘姓名’: [‘赵六’], ‘年龄’: [28], ‘城市’: [‘深圳’]})
# 纵向合并(追加行)
pd.concat([df, df2], ignore_index=True)
# 横向合并(连接列),类似SQL JOIN,这里以‘姓名’为键
df3 = pd.DataFrame({‘姓名’: [‘张三’, ‘李四’], ‘薪水’: [50000, 60000]})
pd.merge(df, df3, on=‘姓名’, how=‘left’)
通过以上七个部分的快速学习,你已经掌握了Pandas进行日常数据处理的大部分核心操作。从数据查看、筛选清洗到分组聚合,这些是构建更复杂分析的基础。建议在Jupyter Notebook中亲自运行这些代码,并尝试修改参数以加深理解。
想要探索更多数据分析实战案例、与同行交流技术难题?欢迎访问云栈社区,这里有丰富的教程资源和活跃的开发者社区。