在这一节中,我们将深入了解如何使用 Pandas 读取 CSV 和 Excel 文件,这是数据分析的基石。
Pandas 提供了非常直观的函数来读取 CSV 和 Excel 文件,这些函数是 read_csv()
和 read_excel()
。在使用这些函数之前,你需要了解几个重要的参数:
filepath_or_buffer
: 文件的路径。sep
: CSV 文件中用于分隔字段的字符,默认为 ‘,’。header
: 用于指定哪一行作为列名,默认为 0,表示第一行。index_col
: 用于指定哪一列作为索引。usecols
: 指定需要读取的列。假设你有一个电商平台的日销售数据 CSV 文件和产品信息的 Excel 文件,你需要分析产品销量。
电商销售数据(sales_data.csv)
date,product_id,quantity_sold
2024-01-01,1001,5
2024-01-01,1002,3
2024-01-02,1001,6
2024-01-02,1003,2
产品信息(product_info.xlsx)
product_id | product_name | price |
---|---|---|
1001 | Product A | 20.5 |
1002 | Product B | 35.0 |
1003 | Product C | 8.0 |
import pandas as pd
# 读取 CSV 文件
sales_data = pd.read_csv('sales_data.csv', sep=',', header=0)
# 读取 Excel 文件
product_data = pd.read_excel('product_info.xlsx')
# 合并销售数据和产品信息
combined_data = pd.merge(sales_data, product_data, on='product_id')
# 分析每个产品的销量
sales_summary = combined_data.groupby('product_name').sum()['quantity_sold']
print(sales_summary)
分析某股票在过去一年的日交易数据,该数据以 CSV 格式提供。
股票市场数据(stock_data.csv)
date,open,high,low,close,volume
2024-01-01,100,102,99,101,5000
2024-01-02,101,103,100,102,6000
2024-01-03,102,104,101,103,5500
2024-01-04,103,105,102,104,4500
# 读取股票市场数据
stock_data = pd.read_csv('stock_data.csv', index_col='date', parse_dates=True)
# 计算简单移动平均值
stock_data['SMA'] = stock_data['close'].rolling(window=15).mean()
# 绘制趋势图
stock_data[['close', 'SMA']].plot(title='Stock Trends')
假设你有一份包含病人信息的 Excel 文件,需要进行数据清洗和分析。
医疗数据(patient_data.xlsx)
patient_id | age | weight | height | diagnosis |
---|---|---|---|---|
1 | 30 | 70 | 175 | A |
2 | 45 | 80 | 180 | B |
3 | 40 | 75 | - | A |
4 | - | 85 | 170 | C |
# 读取病人数据
patient_data = pd.read_excel('patient_data.xlsx')
# 删除缺失值过多的列
patient_data_cleaned = patient_data.dropna(axis=1, thresh=0.8 * len(patient_data))
# 填充缺失值
patient_data_cleaned = patient_data_cleaned.fillna(method='ffill')
通过这些案例,你可以看到 Pandas 在读取和处理 CSV 和 Excel 文件方面的强大能力。无论是处理商业销售数据,分析股票市场趋势,还是清洗医疗数据,Pandas 都能轻松胜任。
在这一节中,我们将深入了解如何使用 Pandas 将数据导出到不同的格式,这对于数据共享和报告非常重要。
Pandas 提供了多种函数来导出数据,包括但不限于:
to_csv()
: 将数据导出为 CSV 文件。to_excel()
: 将数据导出为 Excel 文件。to_json()
: 将数据导出为 JSON 格式。to_sql()
: 将数据导出到 SQL 数据库。导出时,你可以指定各种参数来格式化输出,如指定分隔符、是否包含索引、选择导出的列等。
假设你完成了对某公司销售数据的分析,并需要将结果导出为不同格式以供不同部门使用。
import pandas as pd
# 示例销售数据
data = {
'month': ['January', 'February', 'March'],
'sales': [200, 240, 310],
'expenses': [150, 190, 200]
}
df = pd.DataFrame(data)
# 导出为 CSV
df.to_csv('monthly_sales_report.csv', index=False)
# 导出为 Excel
df.to_excel('monthly_sales_report.xlsx', index=False)
# 导出为 JSON
df.to_json('monthly_sales_report.json')
你的研究团队需要将收集的环境数据共享给国际合作伙伴。
# 示例环境数据
env_data = {
'location': ['Location1', 'Location2'],
'temperature': [22, 19],
'humidity': [80, 70]
}
env_df = pd.DataFrame(env_data)
# 导出为 Excel
env_df.to_excel('environmental_data.xlsx')
# 导出为 JSON
env_df.to_json('environmental_data.json')
你负责每日向客户提供金融市场的摘要报告。
# 示例金融市场数据
fin_data = {
'date': ['2024-01-01', '2024-01-02'],
'open': [100, 102],
'close': [105, 104]
}
fin_df = pd.DataFrame(fin_data)
# 导出为 CSV
fin_df.to_csv('financial_market_summary.csv', index=False)
# 导出为 HTML(便于嵌入网页或邮件)
fin_df.to_html('financial_market_summary.html')
通过这些案例,你可以看到 Pandas 在导出数据方面的灵活性。无论是准备销售报告、共享研究数据还是生成金融市场摘要,Pandas 让数据导出变得既简单又高效。
在这一节中,我们将探索 Pandas 中的一些高级数据导入技巧,这些技巧对于处理大型数据集和复杂数据场景非常有用。
chunksize
参数。parse_dates
参数。na_values
参数。假设你需要分析一个非常大的股市交易数据集。
import pandas as pd
import numpy as np
# 生成大型数据集的模拟
dates = pd.date_range('20240101', periods=10000)
data = pd.DataFrame({
'date': dates,
'price': np.random.randn(10000) * 100 + 100,
'volume': np.random.randint(100, 10000, size=10000)
})
data.to_csv('large_stock_data.csv', index=False)
chunk_size = 1000
for chunk in pd.read_csv('large_stock_data.csv', chunksize=chunk_size):
# 在这里处理每个块的数据
print(chunk.head())
假设你需要从一个包含复杂格式和多种数据类型的电力消耗记录文件中导入数据。
# 生成电力消耗数据的模拟
hours = pd.date_range('2024-01-01', '2024-01-31', freq='H')
power_data = pd.DataFrame({
'timestamp': hours,
'consumption': np.random.randn(len(hours)) * 50 + 500,
'status': np.random.choice(['OK', 'HIGH', 'LOW'], len(hours))
})
power_data.to_csv('power_consumption.csv', index=False)
power_df = pd.read_csv(
'power_consumption.csv',
parse_dates=['timestamp'],
dtype={'status': 'category'}
)
print(power_df.info())
你的任务是处理一个国际航班时间表数据集,其中包含不同格式的日期和时间。
# 生成航班数据的模拟
flights_data = pd.DataFrame({
'flight': ['FL001', 'FL002', 'FL003'],
'departure': ['2024-01-01 08:00:00', '2024-01-01 09:00:00', '2024-01-01 10:00:00'],
'arrival': ['2024-01-01 12:00:00', '2024-01-01 13:00:00', '2024-01-01 14:00:00']
})
flights_data.to_csv('flights_schedule.csv', index=False)
flights_df = pd.read_csv(
'flights_schedule.csv',
parse_dates=['departure', 'arrival']
)
print(flights_df.info())
通过这些案例,你可以看到 Pandas 在处理大型数据集、复杂数据格式以及特殊数据类型时的能力。无论是分析大型股市数据,处理电力消耗记录,还是导入国际航班时间表,使用 Pandas 的高级导入技巧可以使工作更加高效。