Pandas
是一个强大的 Python 数据分析库,提供了高性能、易用的数据结构和数据分析工具。
它的核心数据结构是 DataFrame
和 Series
,这两个结构使得处理表格数据变得非常方便。无论是清洗数据、转换数据还是进行复杂的数据分析,Pandas
都能提供强有力的支持。
首先,你需要安装 pandas
包。可以通过 pip 来安装:
bashpip install pandas
以下是一些具体的示例,展示了如何使用 Pandas
进行基本的数据操作,如创建数据结构、读取数据、数据清洗、数据选择与过滤等。
Pandas
提供了两种主要的数据结构:Series
和 DataFrame
。
Series
是一维标记数组,能够保存任何数据类型(整数、字符串、浮点数、Python 对象等)。
pythonimport 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
是二维标记数据结构,类似于电子表格或 SQL 表格。
pythonimport 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)
Pandas
支持多种数据格式的读取和写入,包括 CSV、Excel、SQL 数据库等。
pythonimport pandas as pd
# 读取 CSV 文件
df = pd.read_csv('path/to/your/file.csv')
print(df.head()) # 显示前五行
pythonimport 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)
pythonimport pandas as pd
# 读取 Excel 文件
df = pd.read_excel('path/to/your/file.xlsx', sheet_name='Sheet1')
print(df.head())
pythonimport 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)
Pandas
提供了许多方法来查看和描述数据。
pythonimport 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())
Pandas
提供了灵活的方法来选择和过滤数据。
pythonimport 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']])
pythonimport 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)
pythonimport 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)
Pandas
提供了许多方法来进行数据清洗,如处理缺失值、重复值等。
pythonimport 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)
pythonimport 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)
Pandas
提供了 groupby
方法来进行数据分组,并支持各种聚合操作。
pythonimport 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)
Pandas
提供了多种方法来合并和连接数据集。
pythonimport 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)
pythonimport 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)
Pandas
提供了强大的时间序列处理功能。
pythonimport 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)
pythonimport pandas as pd
# 将字符串转换为时间戳
timestamp = pd.to_datetime('2023-01-01')
print(timestamp)
# 将时间戳转换为字符串
string_date = timestamp.strftime('%Y-%m-%d')
print(string_date)