跳转至

pandas

Pandas 是一个用于数据分析的 Python 库,它提供了高效的数据结构和操作工具,特别适合处理表格型或结构化数据。Pandas 的核心数据结构是 SeriesDataFrame,它们分别用于处理一维和二维数据。下面是对 Pandas 的详细解析。

一、Pandas 的基本数据结构

1.1 Series

Series 是一种一维的数据结构,类似于 Python 中的列表,但它带有索引。Series 可以存储任何数据类型(整数、字符串、浮点数、对象等)。

import pandas as pd

# 创建一个 Series
s = pd.Series([10, 20, 30, 40, 50], index=['a', 'b', 'c', 'd', 'e'])
print(s)
输出:
a    10
b    20
c    30
d    40
e    50
dtype: int64
- indexSeries 的索引标签,默认是从 0 开始的整数。

1.2 DataFrame

DataFrame 是 Pandas 中最重要的数据结构,它是一个二维的表格型数据结构,类似于 Excel 表格。DataFrame 由多个 Series 组成,每一列是一组数据,每一行是一个数据记录。

# 创建一个 DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
print(df)
输出:
      Name  Age         City
0    Alice   25     New York
1      Bob   30  Los Angeles
2  Charlie   35     Chicago
- DataFrame 的每一列都有一个列标签(Name, Age, City),每一行都有一个行索引(0, 1, 2)。

二、数据导入与导出

2.1 从文件读取数据

Pandas 可以轻松地从各种文件格式(如 CSV、Excel、SQL 数据库)中读取数据。

2.1.1 从 CSV 文件读取
df = pd.read_csv('data.csv')
2.1.2 从 Excel 文件读取
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')

2.2 导出数据到文件

同样,Pandas 可以将数据导出到多种文件格式。

2.2.1 导出到 CSV 文件
df.to_csv('output.csv', index=False)
2.2.2 导出到 Excel 文件
df.to_excel('output.xlsx', sheet_name='Sheet1', index=False)

三、数据查看与选取

3.1 数据查看

3.1.1 查看前几行数据
print(df.head(5))  # 默认查看前5行数据
3.1.2 查看数据的基本信息
print(df.info())  # 显示DataFrame的简要信息
print(df.describe())  # 生成描述性统计信息
3.1.3 查看索引、列名和数据类型
print(df.index)  # 查看行索引
print(df.columns)  # 查看列名
print(df.dtypes)  # 查看数据类型

3.2 数据选取

3.2.1 选取列
print(df['Name'])  # 选取单列
print(df[['Name', 'City']])  # 选取多列
3.2.2 选取行
print(df.loc[0])  # 按标签选取
print(df.iloc[0])  # 按位置选取
3.2.3 条件筛选
print(df[df['Age'] > 30])  # 筛选年龄大于30的数据

四、数据操作与处理

4.1 数据清洗

4.1.1 处理缺失值
df.dropna()  # 删除包含缺失值的行
df.fillna(0)  # 用0填充缺失值
4.1.2 数据去重
df.drop_duplicates()  # 删除重复行
4.1.3 数据类型转换
df['Age'] = df['Age'].astype(float)  # 将年龄列转换为浮点数类型

4.2 数据操作

4.2.1 添加和删除列
df['Salary'] = [50000, 60000, 70000]  # 添加新列
df.drop('Salary', axis=1, inplace=True)  # 删除列
4.2.2 数据排序
df.sort_values(by='Age', ascending=False, inplace=True)  # 按年龄降序排序
4.2.3 分组与聚合
grouped = df.groupby('City').sum()  # 按城市分组并求和
print(grouped)

4.3 数据合并

4.3.1 数据连接(Concatenation)
df1 = pd.DataFrame({'A': ['A0', 'A1'], 'B': ['B0', 'B1']})
df2 = pd.DataFrame({'A': ['A2', 'A3'], 'B': ['B2', 'B3']})
result = pd.concat([df1, df2], axis=0)  # 纵向连接
4.3.2 数据合并(Merging)
left = pd.DataFrame({'key': ['K0', 'K1'], 'A': ['A0', 'A1']})
right = pd.DataFrame({'key': ['K0', 'K1'], 'B': ['B0', 'B1']})
result = pd.merge(left, right, on='key')  # 按照key列合并

五、时间序列处理

Pandas 提供了强大的时间序列功能,可以处理带有时间戳的数据。

5.1 转换为日期时间格式

df['Date'] = pd.to_datetime(df['Date'])  # 将日期列转换为日期时间格式

5.2 设置日期为索引

df.set_index('Date', inplace=True)  # 将日期设置为索引

5.3 重采样数据

df.resample('M').mean()  # 按月重采样并计算平均值

六、数据可视化

Pandas 与 Matplotlib 无缝集成,能够方便地进行数据可视化。

6.1 绘制基本图形

import matplotlib.pyplot as plt

df['Age'].plot(kind='hist')  # 绘制直方图
plt.show()

6.2 绘制折线图

df.plot(x='Date', y='Age', kind='line')  # 绘制折线图
plt.show()

七、其他高级功能

7.1 透视表

Pandas 提供了透视表功能,可以轻松地总结数据。

pivot_table = df.pivot_table(values='Age', index='Name', columns='City', aggfunc='mean')
print(pivot_table)

7.2 数据管道(Pipeline)

管道允许链式操作多个函数,便于代码的可读性和维护性。

result = (df[df['Age'] > 30]
          .groupby('City')
          .agg({'Salary': 'mean'}))

Pandas 是一个功能强大的工具,适用于数据科学和分析的各个阶段。从数据导入、清洗、操作到可视化和导出,Pandas 都能为你提供高效、直观的解决方案。这个详解涵盖了 Pandas 的基础和高级功能,帮助你掌握数据处理的各项技能。