Python 的 Pandas 库是数据分析领域的核心工具,专为高效处理结构化数据而设计。
官方文档: Pandas Documentation
1. 核心数据结构
Pandas 基于两种核心数据结构:
Series
- 一维带标签数组,类似字典与NumPy数组的结合。
创建示例:
import pandas as pd s = pd.Series([3, 5, 7], index=['a', 'b', 'c'])
- 操作:
s.values
获取数值,s.index
查看索引,支持类似字典的键值访问。
DataFrame
- 二维表格,每列可以是不同类型的数据(类似Excel或SQL表)。
创建示例:
data = {'Name': ['Alice', 'Bob'], 'Age': [25, 30]} df = pd.DataFrame(data)
2. 数据读取与写入
支持多种格式,灵活处理数据源:
读取数据:
df = pd.read_csv('data.csv', sep=',', encoding='utf-8') # CSV文件 df = pd.read_excel('data.xlsx', sheet_name='Sheet1') # Excel文件
写入数据:
df.to_csv('output.csv', index=False) # 不保存行索引 df.to_excel('output.xlsx')
3. 数据探索与检查
快速了解数据概况:
查看数据:
df.head(3) # 前3行 df.tail() # 默认后5行 df.sample(2) # 随机抽样2行
数据信息:
df.info() # 数据类型、内存占用 df.describe() # 数值列统计概览(均值、标准差等) df['Age'].value_counts() # 列值频次统计
4. 数据筛选与操作
灵活选择与操作数据:
选择列/行:
df['Name'] # 单列 → Series df[['Name', 'Age']] # 多列 → DataFrame df.loc[0:2, 'Name'] # 按标签选择(行0-2,列名) df.iloc[0:2, 0:2] # 按位置选择(前2行,前2列)
布尔索引:
df[df['Age'] > 25] # 筛选年龄>25的行 df.query("Age > 25 & Name == 'Bob'") # 类似SQL的查询语法
5. 数据清洗与转换
处理缺失值、重复数据:
缺失值处理:
df.dropna(axis=0) # 删除含缺失值的行 df.fillna(0) # 填充为0 df['Age'].interpolate() # 插值填充(如线性插值)
重复值处理:
df.drop_duplicates(subset=['Name']) # 根据列去重
数据转换:
df['Age'] = df['Age'].apply(lambda x: x + 1) # 所有年龄+1 df['Gender'] = df['Gender'].map({'M': 'Male', 'F': 'Female'}) # 值映射
6. 数据合并与分组
高效整合与分析数据:
合并数据:
pd.concat([df1, df2], axis=0) # 纵向堆叠(行合并) pd.merge(df1, df2, on='key') # 类似SQL的JOIN操作
分组聚合:
grouped = df.groupby('Department') grouped['Salary'].mean() # 各部门平均薪资 grouped.agg({'Salary': ['mean', 'max'], 'Age': 'median'}) # 多列聚合
7. 时间序列处理
强大时间数据处理能力:
时间转换:
df['Date'] = pd.to_datetime(df['Date']) # 转换为时间类型 df.set_index('Date', inplace=True) # 设为索引
重采样:
df.resample('M').mean() # 按月重采样计算均值 df.rolling(window=7).mean() # 7天滑动平均
8. 数据可视化
集成Matplotlib快速绘图:
df.plot(kind='line', x='Date', y='Price') # 折线图
df['Age'].plot(kind='hist', bins=20) # 直方图
实战示例:销售数据分析
# 读取数据
sales = pd.read_csv('sales.csv')
# 清洗数据
sales.dropna(subset=['Revenue'], inplace=True) # 删除收入缺失行
sales['Date'] = pd.to_datetime(sales['Date']) # 转换日期格式
# 分析月度收入
monthly_rev = sales.resample('M', on='Date')['Revenue'].sum()
# 可视化
monthly_rev.plot(title='Monthly Revenue')
评论 (0)