Python之Pandas详解

Python之Pandas详解

Pandas 是一个强大的 Python 数据分析库,它为数据处理和分析提供了丰富的数据结构和函数接口,特别适合用于表格数据(如 Excel 表格、SQL 数据库、CSV 文件等)的处理。无论是数据清洗、数据转换、数据统计分析,还是进行复杂的数据操作,Pandas 都提供了高效、灵活的工具。本文将详细介绍 Pandas 库,涵盖其常用的数据结构、基本操作方法以及高级功能,帮助你深入理解并高效使用 Pandas。

一、Pandas简介

Pandas 提供了两种主要的数据结构:

  1. Series:类似于一维数组,可以存储任何类型的数据。每个元素都有一个索引。
  2. DataFrame:类似于二维表格(例如 Excel 表格),由多个 Series 组成,是 Pandas 中最常用的数据结构。

Pandas 通过对数据的高效处理和操作,极大地提升了数据科学和机器学习工作的效率。在 Pandas 中,几乎所有的数据操作都是基于这两种数据结构进行的。

二、安装Pandas

如果你尚未安装 Pandas,可以通过 pip 安装:

pip install pandas

三、Pandas的数据结构

1. Series

Series 是 Pandas 中的一个一维数据结构,可以理解为带有索引的列表或数组。它可以存储整数、浮动、字符串、Python 对象等数据类型。

创建Series

import pandas as pd

# 通过列表创建Series
data = [10, 20, 30, 40, 50]
s = pd.Series(data)
print(s)

输出:

0    10
1    20
2    30
3    40
4    50
dtype: int64

使用自定义索引创建Series

s = pd.Series(data, index=["a", "b", "c", "d", "e"])
print(s)

输出:

a    10
b    20
c    30
d    40
e    50
dtype: int64

2. DataFrame

DataFrame 是一个二维数据结构,可以看作是一个表格,包含多个 Series 作为列。每列可以是不同的数据类型。

创建DataFrame

# 通过字典创建DataFrame
data = {
    'name': ['Tom', 'Jerry', 'Mickey', 'Donald'],
    'age': [20, 22, 19, 21],
    'score': [88, 92, 95, 89]
}
df = pd.DataFrame(data)
print(df)

输出:

     name  age  score
0     Tom   20     88
1   Jerry   22     92
2  Mickey   19     95
3  Donald   21     89

DataFrame的行和列

可以通过列名或行索引访问 DataFrame 的数据:

# 访问列
print(df['name'])

# 访问行(通过位置)
print(df.iloc[0])

# 访问行(通过标签)
print(df.loc[0])

四、Pandas基础操作

1. 数据选择和切片

选择单列数据

# 选择单列
print(df['name'])

选择多列数据

# 选择多列
print(df[['name', 'age']])

选择单行数据

# 选择第一行
print(df.iloc[0])

选择多行数据

# 选择前两行
print(df.iloc[:2])

使用条件选择数据

# 选择age大于20的行
print(df[df['age'] > 20])

2. 数据排序

按列排序

# 按'age'列升序排序
print(df.sort_values(by='age'))

多列排序

# 按'age'升序, 'score'降序排序
print(df.sort_values(by=['age', 'score'], ascending=[True, False]))

3. 数据统计

计算描述性统计

# 计算数据的描述性统计信息
print(df.describe())

求均值、中位数和标准差

# 求age列的均值
print(df['age'].mean())

# 求score列的中位数
print(df['score'].median())

# 求age列的标准差
print(df['age'].std())

4. 数据清洗

处理缺失值

Pandas 提供了丰富的功能来处理缺失值。常见操作包括删除包含缺失值的行或列,或填充缺失值。

# 删除包含缺失值的行
df.dropna()

# 用指定值填充缺失值
df.fillna(0)

替换数据

# 替换某列中的特定值
df['age'] = df['age'].replace(20, 21)

数据去重

# 删除重复的行
df.drop_duplicates()

5. 数据合并与连接

合并多个DataFrame

# 创建两个DataFrame
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': ['A', 'B', 'C']})
df2 = pd.DataFrame({'A': [4, 5, 6], 'B': ['D', 'E', 'F']})

# 按行合并
df_merged = pd.concat([df1, df2])
print(df_merged)

基于列合并DataFrame(类似SQL中的JOIN)

# 创建两个DataFrame
df1 = pd.DataFrame({'key': ['A', 'B', 'C'], 'value1': [1, 2, 3]})
df2 = pd.DataFrame({'key': ['A', 'B', 'D'], 'value2': [4, 5, 6]})

# 基于'key'列进行合并
df_joined = pd.merge(df1, df2, on='key', how='inner')
print(df_joined)

五、Pandas高级功能

1. 分组与聚合

Pandas 提供了 groupby 函数来对数据进行分组操作,并进行聚合计算。

# 按age列分组,并求每组的平均score
grouped = df.groupby('age')['score'].mean()
print(grouped)

2. 数据透视表

Pandas 支持类似 Excel 中的数据透视表功能。

# 创建数据透视表
pivot_table = df.pivot_table(values='score', index='age', aggfunc='mean')
print(pivot_table)

3. 时间序列处理

Pandas 提供了强大的时间序列处理功能,如日期范围生成、时间窗口计算等。

# 创建时间序列
dates = pd.date_range('20220101', periods=6)
df_time = pd.DataFrame({'date': dates, 'data': [1, 2, 3, 4, 5, 6]})
print(df_time)

4. 数据可视化

Pandas 直接与 Matplotlib 集成,能够便捷地对数据进行可视化。

import matplotlib.pyplot as plt

# 绘制age与score的关系图
df.plot(x='age', y='score', kind='scatter')
plt.show()

六、总结

Pandas 是 Python 数据分析的重要工具,它提供了高效、灵活的数据结构(Series 和 DataFrame)以及强大的数据处理功能。无论是数据选择、清洗、统计分析、还是数据可视化,Pandas 都能轻松实现。本教程通过详细的代码示例,帮助你掌握 Pandas 的基本操作和高级功能,提升数据处理效率。

推荐学习路线

  1. 熟悉 Pandas 的基本数据结构:Series 和 DataFrame。
  2. 掌握数据选择、排序、统计、清洗等基础操作。
  3. 学习如何进行数据合并、分组、聚合等复杂操作。
  4. 深入理解 Pandas 时间序列处理和数据可视化功能。

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日