AIGC基础工具-用于数据分析和数据处理的核心库Pandas介绍_Pandas

Table of Contents


Pandas 是 Python 中用于数据分析和数据处理的核心库。它建立在 NumPy 之上,提供了更加高级和便捷的数据结构和工具,尤其适合处理结构化数据(如表格数据)。Pandas 的功能强大且易用,广泛应用于数据科学、金融、统计、机器学习等领域。以下将详细介绍 Pandas 的核心概念、功能及应用。

1. Pandas 的核心数据结构

Pandas 主要提供两种核心数据结构:

1.1 Series

Series 是一种一维的数据结构,类似于 Python 的列表或 NumPy 的一维数组,但增加了标签索引 (index),即每个元素都有一个与之关联的索引值。

创建 Series
import pandas as pd

# 从列表创建 Series
s = pd.Series([10, 20, 30, 40])

# 从字典创建 Series
s_dict = pd.Series({'a': 1, 'b': 2, 'c': 3})

print(s)
print(s_dict)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
Series 重要属性
  • index:Series 的索引标签。
  • values:Series 中的值。
  • dtype:数据类型。
示例
s= pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print("索引:", s.index)
print("值:", s.values)
  • 1.
  • 2.
  • 3.
1.2 DataFrame

DataFrame 是 Pandas 中最常用的二维数据结构,类似于数据库中的表格。它由多个 Series 组成,每一列的数据都有相同的类型,但每列之间可以有不同类型的数据。

创建 DataFrame
# 从字典创建 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35],
        'Salary': [50000, 60000, 70000]}

df = pd.DataFrame(data)
print(df)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
DataFrame 重要属性
  • columns:列标签。
  • index:行标签。
  • values:DataFrame 中的数据值,返回一个 NumPy 数组。
示例
print("列标签:", df.columns)
print("行标签:", df.index)
print("数据:", df.values)
  • 1.
  • 2.
  • 3.

2. Pandas 数据的导入与导出

Pandas 支持多种数据格式的导入和导出,常见的有 CSV、Excel、SQL 数据库、JSON 等格式。

2.1 读取 CSV 文件
df= pd.read_csv('data.csv')
  • 1.
2.2 读取 Excel 文件
df= pd.read_excel('data.xlsx', sheet_name='Sheet1')
  • 1.
2.3 写入 CSV 文件
df.to_csv('output.csv', index=False)  # index=False 防止保存索引列
  • 1.
2.4 读取 JSON 文件
df= pd.read_json('data.json')
  • 1.

3. Pandas 的数据操作

Pandas 提供了丰富的数据操作功能,包括数据选择、过滤、排序、聚合等。

3.1 数据选择和过滤
选择列
# 选择单列
age_column = df['Age']

# 选择多列
subset = df[['Name', 'Salary']]
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
选择行

使用 loc[] 根据标签选择,或使用 iloc[] 根据位置选择。

# 根据标签选择行
row = df.loc[1]  # 选择索引为 1 的行

# 根据位置选择行
row = df.iloc[0:2]  # 选择前两行
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
条件筛选
# 选择年龄大于 30 的行
df_filtered = df[df['Age'] > 30]
  • 1.
  • 2.
3.2 数据排序

Pandas 提供了按行或列排序的功能。

# 按列排序
df_sorted = df.sort_values(by='Age', ascending=False)
  • 1.
  • 2.
3.3 数据的添加与删除
添加新列
# 计算新列 "Bonus",为 Salary 的 10%
df['Bonus'] = df['Salary'] * 0.1
  • 1.
  • 2.
删除列或行
# 删除 "Bonus" 列
df = df.drop(columns=['Bonus'])

# 删除第一行
df = df.drop(index=0)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

4. 数据清洗与预处理

数据清洗是数据分析中的关键步骤,Pandas 提供了处理缺失值、重复值、类型转换等多种功能。

4.1 处理缺失值
检查缺失值
df.isnull()  # 返回布尔值 DataFrame,True 表示缺失值
df.isnull().sum()  # 每列中缺失值的个数
  • 1.
  • 2.
填充缺失值
# 用 0 填充缺失值
df_filled = df.fillna(0)

# 用列的平均值填充
df['Age'] = df['Age'].fillna(df['Age'].mean())
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
删除含有缺失值的行或列
# 删除含有缺失值的行
df_dropped = df.dropna()
  • 1.
  • 2.
4.2 处理重复值
# 检查重复值
df.duplicated()

# 删除重复值
df_cleaned = df.drop_duplicates()
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
4.3 数据类型转换
df['Age'] = df['Age'].astype(float)  # 将 Age 列转换为浮点数类型
  • 1.
4.4 更改列名
df.rename(columns={'Name': 'Full Name'}, inplace=True)
  • 1.

5. 数据聚合与分组操作

Pandas 提供了强大的数据分组与聚合操作,通过 groupby() 方法,可以对数据进行分组后进行各种聚合运算。

5.1 数据分组
grouped= df.groupby('Age')  # 按照 Age 列进行分组
  • 1.
5.2 聚合操作
  • sum():求和。
  • mean():求平均。
  • count():计数。
示例
# 按 Age 分组并计算 Salary 的平均值
grouped_mean = df.groupby('Age')['Salary'].mean()
  • 1.
  • 2.

6. Pandas 的时间序列处理

Pandas 有强大的时间序列处理功能,可以轻松处理带有日期的时间索引、时间戳、周期数据等。

6.1 生成时间序列
# 生成日期范围
date_range = pd.date_range(start='2023-01-01', periods=10, freq='D')
  • 1.
  • 2.
6.2 设置时间索引
df['Date'] = pd.to_datetime(df['Date'])  # 将列转换为日期格式
df.set_index('Date', inplace=True)  # 将 Date 列设置为索引
  • 1.
  • 2.
6.3 处理时间数据
# 按月份聚合
df.resample('M').sum()  # 按月份重采样并求和
  • 1.
  • 2.

7. Pandas 的合并、连接与拼接

Pandas 提供了 SQL 风格的数据合并操作,包括 merge()join()concat()

7.1 merge():SQL 风格的合并
df1= pd.DataFrame({'key': ['A', 'B', 'C'], 'value1': [1, 2, 3]})
df2 = pd.DataFrame({'key': ['A', 'B', 'D'], 'value2': [4, 5, 6]})

df_merged = pd.merge(df1, df2, on='key', how='inner')  # 内连接
  • 1.
  • 2.
  • 3.
  • 4.
7.2 concat():拼接数据
df_concat= pd.concat([df1, df2], axis=0)  # 按行拼接
  • 1.
7.3 join():索引对齐的合并
df1.set_index('key', inplace=True)
df2.set_index('key', inplace=True)

df_joined = df1.join(df2, how='outer')  # 外连接
  • 1.
  • 2.
  • 3.
  • 4.

8. Pandas 与其他库的结合

Pandas 常与其他库结合使用,如:

  • Matplotlib:进行数据可视化。
  • SciPy:用于统计分析。
  • Scikit-learn:用于机器学习模型训练。
8.1 与 Matplotlib 的结合
import matplotlib.pyplot as plt

df['Age'].plot(kind='hist')  # 绘制年龄的直方图
plt.show()
  • 1.
  • 2.
  • 3.
  • 4.

9. Pandas 的性能优化

虽然 Pandas 功能强大,但在处理大规模数据时,性能

可能会成为瓶颈。以下是一些优化技巧:

9.1 使用 category 数据类型

对于重复值较多的字符串列,可以将其转换为 category 类型,减少内存消耗。

df['Category'] = df['Category'].astype('category')
  • 1.
9.2 使用 chunk 分块读取大文件
chunk_iter= pd.read_csv('large_file.csv', chunksize=1000)  # 每次读取 1000 行
for chunk in chunk_iter:
    process(chunk)  # 对每块数据进行处理
  • 1.
  • 2.
  • 3.

10. Pandas 的应用场景

  • 数据分析:Pandas 提供了方便的数据处理工具,适用于数据清洗、统计分析。
  • 金融领域:用于时间序列数据的处理和金融模型的构建。
  • 机器学习:作为特征工程的主要工具,Pandas 被广泛应用于数据预处理。
  • 统计与科学计算:可以与 NumPy、SciPy 结合进行统计建模和数据分析。

Pandas 凭借其强大的数据处理和分析能力,已成为数据科学领域不可或缺的工具。


结束语
Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!