在面对大量数据需要进行处理时,pandas是一个很好的工具。在这简单进行一下技术分享,希望对各位后续工作提供帮助。

pandas 是 Python 生态中最核心的数据分析库之一,它提供了高效、灵活的数据结构(Series 和 DataFrame)和丰富的数据分析工具,广泛应用于数据清洗、转换、分析和可视化预处理等场景。以下是一份 pandas 上手指南,帮助快速入门:

一、安装与导入

1. 安装 pandas

使用 pip 命令安装(确保已安装 Python 环境):

pip install pandas
# 如需处理 Excel 文件,需额外安装 openpyxl 或 xlrd
pip install openpyxl  # 支持 .xlsx 格式
2. 导入 pandas

惯例使用 pd 作为别名:

import pandas as pd

二、核心数据结构

pandas 的核心是两种数据结构:Series(一维)和 DataFrame(二维)。

1. Series(一维数组)

Series 是带标签(索引)的一维数组,可存储多种数据类型(数值、字符串等)。
创建 Series

# 从列表创建(默认索引为 0,1,2...)
s1 = pd.Series([10, 20, 30, 40])
print(s1)
# 输出:
# 0    10
# 1    20
# 2    30
# 3    40
# dtype: int64

# 自定义索引
s2 = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print(s2)
# 输出:
# a    10
# b    20
# c    30
# dtype: int64
2. DataFrame(二维表格)

DataFrame 是类似 Excel 表格的二维结构,包含行索引和列索引,每列可存储不同类型数据。
创建 DataFrame

# 从字典创建(键为列名,值为数据)
data = {
    '姓名': ['张三', '李四', '王五'],
    '年龄': [25, 30, 35],
    '城市': ['北京', '上海', '广州']
}
df = pd.DataFrame(data)
print(df)
# 输出:
#    姓名  年龄  城市
# 0  张三  25  北京
# 1  李四  30  上海
# 2  王五  35  广州

三、数据读取与写入

pandas 支持读取多种格式的文件(CSV、Excel、JSON 等),并能将处理后的数据写入文件。

1. 读取数据
# 读取 CSV 文件
df_csv = pd.read_csv('data.csv')  # 需指定文件路径

# 读取 Excel 文件
df_excel = pd.read_excel('data.xlsx', sheet_name='Sheet1')  # sheet_name 指定工作表

# 读取 JSON 文件
df_json = pd.read_json('data.json')
2. 写入数据
# 写入 CSV(index=False 不保存索引)
df.to_csv('output.csv', index=False)

# 写入 Excel
df.to_excel('output.xlsx', sheet_name='结果', index=False)

四、基本数据查看

拿到数据后,先通过以下方法了解数据概况:

# 查看前 5 行(默认),可指定行数:df.head(10)
print(df.head())

# 查看后 5 行
print(df.tail())

# 查看数据维度(行数, 列数)
print(df.shape)  # 输出 (3, 3)

# 查看列名
print(df.columns)  # 输出 Index(['姓名', '年龄', '城市'], dtype='object')

# 查看数据类型、非空值数量
print(df.info())
# 输出:
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 3 entries, 0 to 2
# Data columns (total 3 columns):
#  #   Column  Non-Null Count  Dtype
# ---  ------  --------------  -----
#  0   姓名      3 non-null      object
#  1   年龄      3 non-null      int64
#  2   城市      3 non-null      object
# dtypes: int64(1), object(2)
# memory usage: 200.0+ bytes

# 查看数值型列的统计信息(均值、标准差、最值等)
print(df.describe())  # 仅对数值列有效(如年龄)

五、数据选择与筛选

1. 选择列
# 选择单列(返回 Series)
ages = df['年龄']
print(ages)

# 选择多列(返回 DataFrame)
name_city = df[['姓名', '城市']]
print(name_city)
2. 选择行
  • loc:基于标签(索引名)选择
  • iloc:基于位置(0 开始的索引)选择
# loc 按标签选择行
row0 = df.loc[0]  # 选择索引为 0 的行
print(row0)

# iloc 按位置选择行
row1 = df.iloc[1]  # 选择第 2 行(位置 1)
print(row1)

# 选择多行(切片)
rows = df.iloc[0:2]  # 选择前 2 行
3. 条件筛选
# 筛选年龄 > 28 的行
filtered = df[df['年龄'] > 28]
print(filtered)
# 输出:
#    姓名  年龄  城市
# 1  李四  30  上海
# 2  王五  35  广州

# 多条件筛选(& 且,| 或,需用括号包裹)
filtered = df[(df['年龄'] > 28) & (df['城市'] == '上海')]

六、数据清洗

实际数据常存在缺失值、重复值等问题,需先清洗。

1. 处理缺失值
# 检测缺失值(True 表示缺失)
print(df.isnull())

# 删除含缺失值的行(how='any' 有一个缺失就删除,默认)
df_clean = df.dropna()

# 填充缺失值(如用均值填充年龄)
df['年龄'] = df['年龄'].fillna(df['年龄'].mean())
2. 处理重复值
# 检测重复行
print(df.duplicated())  # True 表示重复

# 删除重复行(保留第一行)
df = df.drop_duplicates()
3. 数据类型转换
# 将“年龄”列从 int 转为 float
df['年龄'] = df['年龄'].astype(float)

# 将字符串列转为日期(如“生日”列)
df['生日'] = pd.to_datetime(df['生日'])

七、数据处理常用操作

1. 添加/删除列
# 添加新列(如“年龄+5”)
df['年龄+5'] = df['年龄'] + 5

# 删除列(axis=1 表示列,inplace=True 直接修改原数据)
df.drop('年龄+5', axis=1, inplace=True)
2. 排序
# 按“年龄”升序排序(默认 ascending=True)
df_sorted = df.sort_values(by='年龄')

# 按“年龄”降序排序
df_sorted = df.sort_values(by='年龄', ascending=False)
3. 分组统计(groupby)

按某列分组后计算统计量(如均值、总和):

# 按“城市”分组,计算每个城市的平均年龄
city_age_mean = df.groupby('城市')['年龄'].mean()
print(city_age_mean)

八、综合示例

假设我们有一份学生成绩数据(scores.csv),包含“姓名”“科目”“成绩”列,需求:统计每个学生的平均分。

import pandas as pd

# 读取数据
df = pd.read_csv('scores.csv')

# 查看数据
print(df.head())

# 按“姓名”分组,计算平均分
avg_scores = df.groupby('姓名')['成绩'].mean().reset_index()  # reset_index() 转为 DataFrame

# 按平均分降序排序
avg_scores = avg_scores.sort_values(by='成绩', ascending=False)

# 保存结果
avg_scores.to_csv('学生平均分.csv', index=False)
print("结果已保存!")

总结

pandas 是数据分析的基础工具,以上介绍了最常用的入门操作。实际应用中,可结合官方文档(pandas 文档)深入学习更复杂的功能(如合并数据、透视表、时间序列分析等)。多练习处理实际数据是掌握 pandas 的关键!希望可以帮助到各位!

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐