2025-03-05
编程
00
请注意,本文编写于 54 天前,最后修改于 54 天前,其中某些信息可能已经过时。

目录

安装
基本使用示例
1. 创建数据结构
创建 Series
创建 DataFrame
2. 读取和写入数据
读取 CSV 文件
写入 CSV 文件
读取 Excel 文件
写入 Excel 文件
3. 数据查看和描述统计
查看数据
4. 数据选择和过滤
选择列
过滤数据
使用条件组合过滤
5. 数据清洗
处理缺失值
删除重复值
6. 数据分组和聚合
7. 数据合并和连接
合并数据
连接数据
8. 时间序列数据处理
创建时间序列
转换时间戳

Pandas 是一个强大的 Python 数据分析库,提供了高性能、易用的数据结构和数据分析工具。

它的核心数据结构是 DataFrameSeries,这两个结构使得处理表格数据变得非常方便。无论是清洗数据、转换数据还是进行复杂的数据分析,Pandas 都能提供强有力的支持。

安装

首先,你需要安装 pandas 包。可以通过 pip 来安装:

bash
pip install pandas

基本使用示例

以下是一些具体的示例,展示了如何使用 Pandas 进行基本的数据操作,如创建数据结构、读取数据、数据清洗、数据选择与过滤等。

1. 创建数据结构

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

创建 Series

Series 是一维标记数组,能够保存任何数据类型(整数、字符串、浮点数、Python 对象等)。

python
import pandas as pd # 从列表创建 Series s = pd.Series([1, 3, 5, np.nan, 6, 8]) print(s) # 从字典创建 Series s2 = pd.Series({'a': 1, 'b': 2, 'c': 3}) print(s2)
创建 DataFrame

DataFrame 是二维标记数据结构,类似于电子表格或 SQL 表格。

python
import pandas as pd # 从字典创建 DataFrame data = { 'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'Los Angeles', 'Chicago'] } df = pd.DataFrame(data) print(df) # 从列表创建 DataFrame data_list = [['Alice', 25, 'New York'], ['Bob', 30, 'Los Angeles'], ['Charlie', 35, 'Chicago']] df2 = pd.DataFrame(data_list, columns=['Name', 'Age', 'City']) print(df2)

2. 读取和写入数据

Pandas 支持多种数据格式的读取和写入,包括 CSV、Excel、SQL 数据库等。

读取 CSV 文件
python
import pandas as pd # 读取 CSV 文件 df = pd.read_csv('path/to/your/file.csv') print(df.head()) # 显示前五行
写入 CSV 文件
python
import pandas as pd # 创建一个简单的 DataFrame data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]} df = pd.DataFrame(data) # 写入 CSV 文件 df.to_csv('output.csv', index=False)
读取 Excel 文件
python
import pandas as pd # 读取 Excel 文件 df = pd.read_excel('path/to/your/file.xlsx', sheet_name='Sheet1') print(df.head())
写入 Excel 文件
python
import pandas as pd # 创建一个简单的 DataFrame data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]} df = pd.DataFrame(data) # 写入 Excel 文件 df.to_excel('output.xlsx', index=False)

3. 数据查看和描述统计

Pandas 提供了许多方法来查看和描述数据。

查看数据
python
import pandas as pd # 创建一个简单的 DataFrame data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'Los Angeles', 'Chicago']} df = pd.DataFrame(data) # 显示前五行 print(df.head()) # 显示后五行 print(df.tail()) # 显示数据的基本信息 print(df.info()) # 显示数据的描述统计信息 print(df.describe())

4. 数据选择和过滤

Pandas 提供了灵活的方法来选择和过滤数据。

选择列
python
import pandas as pd # 创建一个简单的 DataFrame data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'Los Angeles', 'Chicago']} df = pd.DataFrame(data) # 选择单列 print(df['Name']) # 选择多列 print(df[['Name', 'Age']])
过滤数据
python
import pandas as pd # 创建一个简单的 DataFrame data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'Los Angeles', 'Chicago']} df = pd.DataFrame(data) # 过滤年龄大于等于30的行 filtered_df = df[df['Age'] >= 30] print(filtered_df)
使用条件组合过滤
python
import pandas as pd # 创建一个简单的 DataFrame data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'Los Angeles', 'Chicago']} df = pd.DataFrame(data) # 过滤年龄大于等于30且城市为洛杉矶的行 filtered_df = df[(df['Age'] >= 30) & (df['City'] == 'Los Angeles')] print(filtered_df)

5. 数据清洗

Pandas 提供了许多方法来进行数据清洗,如处理缺失值、重复值等。

处理缺失值
python
import pandas as pd import numpy as np # 创建一个包含缺失值的 DataFrame data = {'Name': ['Alice', 'Bob', np.nan], 'Age': [25, np.nan, 35], 'City': ['New York', 'Los Angeles', np.nan]} df = pd.DataFrame(data) # 删除含有缺失值的行 cleaned_df = df.dropna() print(cleaned_df) # 填充缺失值 filled_df = df.fillna({'Age': 0, 'City': 'Unknown'}) print(filled_df)
删除重复值
python
import pandas as pd # 创建一个包含重复值的 DataFrame data = {'Name': ['Alice', 'Bob', 'Alice'], 'Age': [25, 30, 25], 'City': ['New York', 'Los Angeles', 'New York']} df = pd.DataFrame(data) # 删除重复值 deduplicated_df = df.drop_duplicates() print(deduplicated_df)

6. 数据分组和聚合

Pandas 提供了 groupby 方法来进行数据分组,并支持各种聚合操作。

python
import pandas as pd # 创建一个简单的 DataFrame data = {'Name': ['Alice', 'Bob', 'Charlie', 'Alice'], 'Age': [25, 30, 35, 25], 'City': ['New York', 'Los Angeles', 'Chicago', 'New York']} df = pd.DataFrame(data) # 按城市分组并计算每组的平均年龄 grouped_df = df.groupby('City').agg({'Age': 'mean'}) print(grouped_df)

7. 数据合并和连接

Pandas 提供了多种方法来合并和连接数据集。

合并数据
python
import pandas as pd # 创建两个简单的 DataFrame df1 = pd.DataFrame({'Name': ['Alice', 'Bob'], 'Age': [25, 30]}) df2 = pd.DataFrame({'Name': ['Charlie', 'David'], 'Age': [35, 40]}) # 合并数据 merged_df = pd.concat([df1, df2], ignore_index=True) print(merged_df)
连接数据
python
import pandas as pd # 创建两个简单的 DataFrame df1 = pd.DataFrame({'Name': ['Alice', 'Bob'], 'Age': [25, 30]}) df2 = pd.DataFrame({'Name': ['Alice', 'Bob'], 'City': ['New York', 'Los Angeles']}) # 连接数据 joined_df = pd.merge(df1, df2, on='Name') print(joined_df)

8. 时间序列数据处理

Pandas 提供了强大的时间序列处理功能。

创建时间序列
python
import pandas as pd # 创建一个日期范围 dates = pd.date_range('20230101', periods=6) print(dates) # 创建一个包含时间序列的 DataFrame df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD')) print(df)
转换时间戳
python
import pandas as pd # 将字符串转换为时间戳 timestamp = pd.to_datetime('2023-01-01') print(timestamp) # 将时间戳转换为字符串 string_date = timestamp.strftime('%Y-%m-%d') print(string_date)