Python Pandas 全面指南:用法介绍及10个应用场景实践

科技   2024-08-14 18:22   浙江  

微信改版,求求大家星标下公众号

不然后面推送大家可能会看不到


Python Pandas 全面指南:用法介绍及10个应用场景实践

大家好,我是老表,今天给大家分享一篇 Pandas 全面教学指南,希望对大家学习数据分析及自动化办公有帮助。本文已经转为语音,欢迎大家点击下面播放按钮边听边看,效率更高,更专注。

Pandas 是 Python 中最常用的数据分析库之一,它提供了高效的数据结构和分析工具,尤其适用于处理表格数据和时间序列数据。Pandas 主要有两种数据结构:SeriesDataFrame,它们分别对应一维和二维数据。本文将全面介绍 Pandas 的基本用法,并通过 10 个实际应用场景展示其强大功能。

插播:现在下载我们自己开发的 想读APP,AI+阅读,还可以进一步让阅读、学习文章更简单,点击查看想读安装使用说明,现在注册后加文末我微信,发我注册邮箱,即有机会获得SVIP权限。

目录

  • 1. Pandas 基本用法

    • 1.1 导入 Pandas

    • 1.2 创建 Series

    • 1.3 创建 DataFrame

    • 1.4 数据选择与过滤

    • 1.5 数据处理

    • 1.6 数据分组与聚合

    • 1.7 数据可视化

  • 2. 10 个 Pandas 应用场景及代码示例

    • 场景1:读取 CSV 文件并分析销售数据

    • 场景2:处理时间序列数据

    • 场景3:数据清洗与处理

    • 场景4:数据合并与连接

    • 场景5:数据透视表与多重索引

    • 场景6:数据重塑与转换

    • 场景7:文本数据处理

    • 场景8:数据筛选与高级查询

    • 场景9:处理大数据

    • 场景10:数据导出与保存

  • 结语


1. Pandas 基本用法

1.1 导入 Pandas

在开始使用 Pandas 之前,首先需要导入库:

# 如果没安装的话先 pip install pandas 
import pandas as pd

1.2 创建 Series

Series 是 Pandas 的一维数组,可以保存任意类型的数据,并带有索引。

# 创建一个简单的 Series
data = pd.Series([1234], index=['a''b''c''d'])
print(data)
print("-----------")
# 三种不同的检索方式:
# data["b"] 和 data.loc["b"] 是通过标签 "b" 来检索 Series 中的元素;
# data.iloc[1] 是通过整数位置 1 来检索 Series 中的元素。
print(data["b"], data.iloc[1], data.loc["b"])

1.3 创建 DataFrame

DataFrame 是 Pandas 的二维数据结构,相当于 Excel 中的表格。

# 通过字典创建一个 DataFrame
data = {
    '姓名': ['张三''李四''王五'],
    '年龄': [253028],
    '城市': ['北京''上海''广州']
}
df = pd.DataFrame(data)
print(df)

注意 DataFrame 数据检索和 Series 略微不同,iloc 是基于位置索引的,loc 是基于标签索引的,而直接使用列标签则是检索整个列的数据。。

1. 通过列标签(column label)检索:

你可以通过指定列标签来检索 DataFrame 中的某一列的数据。

# 通过列标签检索
print(df['姓名'])

这将返回 DataFrame 中的“姓名”列。

2. 通过 iloc 检索(基于位置索引):

iloc 可以基于行和列的位置索引来检索数据。

# 通过 iloc 检索
print(df.iloc[0])  # 检索第一行的数据
print(df.iloc[:, 1])  # 检索所有行的第二列(年龄列)

3. 通过 loc 检索(基于标签索引):

loc 可以基于行和列的标签来检索数据。

# 通过 loc 检索
print(df.loc[0'姓名'])  # 检索第一行“姓名”列的数据
print(df.loc[:, '城市'])  # 检索所有行的“城市”列的数据

以上案例输出情况:

1.4 数据选择与过滤

Pandas 提供了多种方法来选择和过滤数据。

# 按列选择数据
print(df['姓名'])
print("----------------")
# 按条件过滤数据
print(df[df['年龄'] > 28])

1.5 数据处理

Pandas 提供了丰富的函数用于数据处理,如缺失值处理、数据转换等。

# 缺失值处理
df['年龄'] = df['年龄'].fillna(df['年龄'].mean())

# 数据转换
df['年龄'] = df['年龄'].astype(int)

1.6 数据分组与聚合

数据分组与聚合是 Pandas 的强大功能,特别适用于数据统计分析。

# 按城市分组,并计算平均年龄
grouped = df.groupby('城市').mean()
print(grouped)

1.7 数据可视化

Pandas 与 Matplotlib 库结合,可以轻松实现数据可视化。

import matplotlib.pyplot as plt

# 默认是索引作为x轴
df['年龄'].plot(kind='bar')
plt.show()

2. 10 个 Pandas 应用场景及代码示例

生成测试数据:

# 生成假数据
import pandas as pd
import numpy as np

# 设置随机种子以保证可重复性
np.random.seed(42)

# 生成假的销售数据
data = {
    'Order ID': np.arange(121),  # 订单ID,从1到20
    'Product': np.random.choice(['Laptop''Tablet''Smartphone''Monitor''Keyboard'], size=20),  # 产品类别
    'Quantity Sold': np.random.randint(110, size=20),  # 销售数量
    'Price per Unit': np.round(np.random.uniform(501000, size=20), 2),  # 单价
    'Total Sales'lambda df: df['Quantity Sold'] * df['Price per Unit'],  # 总销售额
    'Sale Date': pd.date_range(start='2023-01-01', periods=20, freq='D'),  # 销售日期
    'Customer Name': np.random.choice(['Alice''Bob''Charlie''David''Eva'], size=20),  # 客户名称
    'Region': np.random.choice(['North''South''East''West'], size=20)  # 销售区域
}

# 创建DataFrame
df = pd.DataFrame(data)
df['Total Sales'] = df['Quantity Sold'] * df['Price per Unit']  # 计算总销售额

# 保存为CSV文件
file_path = './data/sales_data.csv'
df.to_csv(file_path, index=False)

场景1:读取 CSV 文件并分析销售数据

在数据分析中,读取 CSV 文件是非常常见的操作。Pandas 使得这一步骤非常简单。

import pandas as pd

# 读取 CSV 文件到 DataFrame
sales_data = pd.read_csv('./data/sales_data.csv')

# 查看前五行数据,了解数据结构
print("数据前五行:")
print(sales_data.head())

# 分析每个产品的销售量
sales_by_product = sales_data.groupby('Product')['Quantity Sold'].sum()
print("\n每个产品的总销售量:")
print(sales_by_product)

场景2:处理时间序列数据

Pandas 对时间序列数据有着强大的支持,例如处理股票数据。

import pandas as pd

# 读取 CSV 文件到 DataFrame
sales_data = pd.read_csv('./data/sales_data.csv')

# 将 'Sale Date' 列转换为日期类型
sales_data['Sale Date'] = pd.to_datetime(sales_data['Sale Date'])

# 按日期分组,计算每天的总销售额
daily_sales = sales_data.groupby('Sale Date')['Total Sales'].sum()

# 打印按日期分组后的数据
# print("\n按日期分组的总销售额:")
# print(daily_sales)

# 计算滚动平均值(窗口期为3天)
daily_sales_rolling = daily_sales.rolling(window=3).mean()

# 打印带滚动平均值的数据
# print("\n带有滚动平均值的总销售额:")
# print(daily_sales_rolling)

# 将两个 Series 合并到一个 DataFrame 中,列名分别为 'Total Sales' 和 'Rolling Mean'
combined_data = pd.DataFrame({
    'Total Sales': daily_sales,
    'Rolling Mean': daily_sales_rolling
})

# 打印合并后的数据,两个输出将并列显示
print(combined_data)

场景3:数据清洗与处理

数据清洗是数据分析中必不可少的一部分,Pandas 提供了多种工具用于去除重复数据、处理缺失值等。下面的例子展示了如何在销售数据中删除重复行并处理缺失值。

import pandas as pd

# 读取 CSV 文件
sales_data = pd.read_csv('./data/sales_data.csv')

# 删除重复行
df_cleaned = sales_data.drop_duplicates()
print("删除重复行后的数据:")
print(df_cleaned)

# 处理缺失值(使用前向填充方法)
df_filled = sales_data.fillna(method='ffill')
print("\n处理缺失值后的数据(前向填充):")
print(df_filled)

场景4:数据合并与连接

在数据分析中,经常需要将多个表格的数据合并在一起,Pandas 提供了简单而强大的工具来实现这一功能。以下示例展示了如何将两个数据表左连接在一起。

import pandas as pd

# 读取 CSV 文件
sales_data = pd.read_csv('./data/sales_data.csv')

# 创建一个额外的 DataFrame 模拟要合并的数据
additional_data = pd.DataFrame({
    'Order ID': [12321],
    'Discount': [510020]
})

# 左连接两个 DataFrame
merged_data = pd.merge(sales_data, additional_data, on='Order ID', how='left')
print("左连接后的数据:")
print(merged_data)

场景5:数据透视表与多重索引

透视表和多重索引是分析和总结数据的强大工具,尤其适用于汇总数据并从多个维度进行分析。下面展示了如何使用 Pandas 创建透视表并应用多重索引。

import pandas as pd

# 读取 CSV 文件
sales_data = pd.read_csv('./data/sales_data.csv')

# 创建透视表,按产品和地区汇总销售数量
pivot_table = pd.pivot_table(sales_data, values='Quantity Sold', index=['Product'], columns=['Region'], aggfunc='sum')
print("销售数量透视表:")
print(pivot_table)

# 设置多重索引
sales_data.set_index(['Product''Region'], inplace=True)
print("\n设置多重索引后的数据:")
print(sales_data)

场景6:数据重塑与转换

Pandas 提供了许多数据重塑工具,如 stackunstack,stack 可以快速将 Dataframe 转成Series 类型。以下示例展示了如何使用这些工具对数据进行重塑和转换。

import pandas as pd

# 读取数据并恢复默认索引
sales_data = pd.read_csv('sales_data.csv')

# 将数据重塑为堆叠格式
stacked = sales_data.stack()
print("堆叠后的数据:")
print(stacked)

# 取消堆叠
unstacked = stacked.unstack()
print("\n取消堆叠后的数据:")
print(unstacked)

场景7:文本数据处理

处理文本数据在数据分析中也很常见,Pandas 提供了强大的字符串操作功能。以下示例展示了如何提取字符串中的数字并进行字符串替换。

import pandas as pd

# 读取数据并恢复默认索引
sales_data = pd.read_csv('./data/sales_data.csv')

# 添加一个模拟文本列
sales_data['Text'] = ['Order 1''Order 2''Order 3''Order 4''Order 5''Order 6''Order 7''Order 8''Order 9''Order 10',
                      'Order 11''Order 12''Order 13''Order 14''Order 15''Order 16''Order 17''Order 18''Order 19''Order 20']

# 提取字符串中的数字
sales_data['Order Number'] = sales_data['Text'].str.extract('(\d+)', expand=False)
print("提取后的订单号:")
print(sales_data[['Text''Order Number']])

# 字符串替换
sales_data['Text'] = sales_data['Text'].str.replace('Order''Purchase')
print("\n替换后的文本:")
print(sales_data[['Text']])

场景8:数据筛选与高级查询

Pandas 使数据筛选和高级查询变得非常简单。以下示例展示了如何基于条件筛选数据以及如何查询特定列的值。

import pandas as pd

# 读取数据并恢复默认索引
sales_data = pd.read_csv('./data/sales_data.csv')

# 条件筛选:筛选销售数量大于5的记录
filtered_df = sales_data[sales_data['Quantity Sold'] > 5]
print("筛选销售数量大于5的记录:")
print(filtered_df)

# 查询特定列的值
values = sales_data.loc[sales_data['Product'] == 'Laptop''Customer Name']
print("\n购买 Laptop 的客户名称:")
print(values)

场景9:处理大数据

对于大数据集,Pandas 可以与 Dask 库结合使用,以支持并行计算和更高效的数据处理。后面我们再写一篇文章详细介绍 dask 。

import dask.dataframe as dd

# 使用 Dask 读取较大的 CSV 数据集(假设我们有一个大数据集)
ddf = dd.read_csv('./data/sales_data.csv')

# 执行延迟计算,计算每个产品的总销售量
result = ddf.groupby('Product')['Quantity Sold'].sum().compute()
print("Dask 计算每个产品的总销售量:")
print(result)

场景10:数据导出与保存

数据分析的最后一步通常是将处理后的数据导出到文件中,Pandas 支持多种导出格式。以下示例展示了如何将数据导出到 CSV 文件、Excel 文件以及 SQL 数据库中。

import pandas as pd
from sqlalchemy import create_engine

# 处理好的数据导出到 CSV 文件
sales_data.to_csv('output_sales_data.csv', index=False)
print("数据已导出到 output_sales_data.csv")

# 导出到 Excel 文件
sales_data.to_excel('output_sales_data.xlsx', sheet_name='SalesData', index=False)
print("数据已导出到 output_sales_data.xlsx")

# 导出到 SQL 数据库
engine = create_engine('sqlite:///sales_data.sql')
sales_data.to_sql('sales_data', engine, index=False)
print("数据已导出到 SQL 数据库的 sales_data 表中")

通过这些场景和示例代码,你可以掌握 Pandas 在数据清洗、处理、分析和导出方面的强大功能,并将其应用于实际的销售数据分析中。

3. 结语

Pandas 是 Python 生态系统中处理数据的利器,无论是数据清洗、分析还是可视化,Pandas 都提供了简洁而强大的工具。在本文中,我们介绍了 Pandas 的基础用法,并通过 10 个实际应用场景展示了 Pandas 的强大功能。希望这篇文章能帮助你更好地理解和使用 Pandas,在数据分析的道路上走得更远,当然如果你不想做数据分析,只是把 pandas 作为一个表格数据处理工具,进行一些办公自动化也是不错的选择。

无论你是数据分析新手,还是经验丰富的数据科学家,Pandas 都可以成为你处理数据时不可或缺的工具。赶紧动手试试吧!

最后,创作不易,如果觉得本文还行的话,请帮忙点赞、转发,也可以评论交流,不知道评论什么,说一句 666,也是对我莫大的鼓励。谢谢

插播:现在下载我们自己开发的 想读APP,阅读、学习文章更简单,点击查看想读安装使用说明,现在注册后加文末我微信,发我注册邮箱,即有机会获得SVIP权限

加入我们


扫码加我微信,回复:AI阅读
一起迎接AI时代

简说Python
号主老表,自学,分享Python,SQL零基础入门、数据分析、数据挖掘、机器学习优质文章以及学习经验。
 最新文章