《Pandas 简易速速上手小册》第2章:Pandas 数据导入与导出(2024 最新版)

简介: 《Pandas 简易速速上手小册》第2章:Pandas 数据导入与导出(2024 最新版)

c8d8ed47f9a1368db458c1960ee26c7.png

2.1 读取 CSV 和 Excel 文件

在这一节中,我们将深入了解如何使用 Pandas 读取 CSV 和 Excel 文件,这是数据分析的基石。

2.1.1 基础知识

Pandas 提供了非常直观的函数来读取 CSV 和 Excel 文件,这些函数是 read_csv()read_excel()。在使用这些函数之前,你需要了解几个重要的参数:

  • filepath_or_buffer: 文件的路径。
  • sep: CSV 文件中用于分隔字段的字符,默认为 ‘,’。
  • header: 用于指定哪一行作为列名,默认为 0,表示第一行。
  • index_col: 用于指定哪一列作为索引。
  • usecols: 指定需要读取的列。

2.1.2 重点案例:电商销售数据分析

假设你有一个电商平台的日销售数据 CSV 文件和产品信息的 Excel 文件,你需要分析产品销量。

步骤1:数据准备

电商销售数据(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

步骤2:数据导入

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')

步骤3:销量分析

# 合并销售数据和产品信息
combined_data = pd.merge(sales_data, product_data, on='product_id')
# 分析每个产品的销量
sales_summary = combined_data.groupby('product_name').sum()['quantity_sold']
print(sales_summary)

2.1.3 拓展案例一:金融市场数据分析

分析某股票在过去一年的日交易数据,该数据以 CSV 格式提供。

步骤1:数据准备

股票市场数据(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

步骤2:数据导入

# 读取股票市场数据
stock_data = pd.read_csv('stock_data.csv', index_col='date', parse_dates=True)

步骤3:趋势分析

# 计算简单移动平均值
stock_data['SMA'] = stock_data['close'].rolling(window=15).mean()
# 绘制趋势图
stock_data[['close', 'SMA']].plot(title='Stock Trends')

2.1.4 拓展案例二:医疗健康数据处理

假设你有一份包含病人信息的 Excel 文件,需要进行数据清洗和分析。

步骤1:数据准备

医疗数据(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

步骤2:数据导入

# 读取病人数据
patient_data = pd.read_excel('patient_data.xlsx')

步骤2:数据清洗

# 删除缺失值过多的列
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 都能轻松胜任。


2.2 导出数据到不同格式

在这一节中,我们将深入了解如何使用 Pandas 将数据导出到不同的格式,这对于数据共享和报告非常重要。

2.2.1 基础知识

Pandas 提供了多种函数来导出数据,包括但不限于:

  • to_csv(): 将数据导出为 CSV 文件。
  • to_excel(): 将数据导出为 Excel 文件。
  • to_json(): 将数据导出为 JSON 格式。
  • to_sql(): 将数据导出到 SQL 数据库。

导出时,你可以指定各种参数来格式化输出,如指定分隔符、是否包含索引、选择导出的列等。

2.2.2 重点案例:分析报告导出

假设你完成了对某公司销售数据的分析,并需要将结果导出为不同格式以供不同部门使用。

步骤1:准备数据

import pandas as pd
# 示例销售数据
data = {
    'month': ['January', 'February', 'March'],
    'sales': [200, 240, 310],
    'expenses': [150, 190, 200]
}
df = pd.DataFrame(data)

步骤2:导出数据

# 导出为 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')

2.2.3 拓展案例一:研究数据集的共享

你的研究团队需要将收集的环境数据共享给国际合作伙伴。

步骤1:准备数据

# 示例环境数据
env_data = {
    'location': ['Location1', 'Location2'],
    'temperature': [22, 19],
    'humidity': [80, 70]
}
env_df = pd.DataFrame(env_data)

步骤2:导出数据

# 导出为 Excel
env_df.to_excel('environmental_data.xlsx')
# 导出为 JSON
env_df.to_json('environmental_data.json')

2.2.4 拓展案例二:金融市场日报

你负责每日向客户提供金融市场的摘要报告。

步骤1:准备数据

# 示例金融市场数据
fin_data = {
    'date': ['2024-01-01', '2024-01-02'],
    'open': [100, 102],
    'close': [105, 104]
}
fin_df = pd.DataFrame(fin_data)

步骤2:导出数据

# 导出为 CSV
fin_df.to_csv('financial_market_summary.csv', index=False)
# 导出为 HTML(便于嵌入网页或邮件)
fin_df.to_html('financial_market_summary.html')

通过这些案例,你可以看到 Pandas 在导出数据方面的灵活性。无论是准备销售报告、共享研究数据还是生成金融市场摘要,Pandas 让数据导出变得既简单又高效。


2.3 高级数据导入技巧

在这一节中,我们将探索 Pandas 中的一些高级数据导入技巧,这些技巧对于处理大型数据集和复杂数据场景非常有用。

2.3.1 基础知识

  1. 分块读取(Chunking): 对于大型文件,一次性读入可能会消耗大量内存。Pandas 允许分块读取数据,使用 chunksize 参数。
  2. 数据类型指定(Dtype Specification): 在导入数据时指定列的数据类型,可以提高效率并减少内存使用。
  3. 日期解析(Date Parsing): 在导入时解析日期,可以使用 parse_dates 参数。
  4. 处理缺失值(Handling Missing Data): 在导入时处理缺失值,可以使用 na_values 参数。

2.3.2 重点案例:大型股市数据分析

假设你需要分析一个非常大的股市交易数据集。

步骤1:准备数据

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)

步骤2:分块读取数据

chunk_size = 1000
for chunk in pd.read_csv('large_stock_data.csv', chunksize=chunk_size):
    # 在这里处理每个块的数据
    print(chunk.head())

2.3.3 拓展案例一:处理复杂的电力消耗数据

假设你需要从一个包含复杂格式和多种数据类型的电力消耗记录文件中导入数据。

步骤1:准备数据

# 生成电力消耗数据的模拟
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)

步骤2:指定数据类型和日期解析

power_df = pd.read_csv(
    'power_consumption.csv',
    parse_dates=['timestamp'],
    dtype={'status': 'category'}
)
print(power_df.info())

2.3.4 拓展案例二:国际航班数据导入与转换

你的任务是处理一个国际航班时间表数据集,其中包含不同格式的日期和时间。

步骤1:准备数据

# 生成航班数据的模拟
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)

步骤2:日期时间解析

flights_df = pd.read_csv(
    'flights_schedule.csv',
    parse_dates=['departure', 'arrival']
)
print(flights_df.info())

通过这些案例,你可以看到 Pandas 在处理大型数据集、复杂数据格式以及特殊数据类型时的能力。无论是分析大型股市数据,处理电力消耗记录,还是导入国际航班时间表,使用 Pandas 的高级导入技巧可以使工作更加高效。

目录
相关文章
|
12天前
|
数据采集 机器学习/深度学习 数据可视化
《Pandas 简易速速上手小册》第10章:Pandas 实战案例(2024 最新版)
《Pandas 简易速速上手小册》第10章:Pandas 实战案例(2024 最新版)
25 2
|
12天前
|
数据可视化 数据挖掘 定位技术
《Pandas 简易速速上手小册》第9章:Pandas 数据可视化(2024 最新版)
《Pandas 简易速速上手小册》第9章:Pandas 数据可视化(2024 最新版)
32 2
|
12天前
|
数据采集 数据挖掘 数据处理
《Pandas 简易速速上手小册》第8章:Pandas 高级数据分析技巧(2024 最新版)
《Pandas 简易速速上手小册》第8章:Pandas 高级数据分析技巧(2024 最新版)
24 1
|
12天前
|
数据采集 机器学习/深度学习 自然语言处理
《Pandas 简易速速上手小册》第7章:Pandas 文本和类别数据处理(2024 最新版)
《Pandas 简易速速上手小册》第7章:Pandas 文本和类别数据处理(2024 最新版)
26 1
|
12天前
|
监控 数据挖掘 数据处理
《Pandas 简易速速上手小册》第6章:Pandas 时间序列分析(2024 最新版)
《Pandas 简易速速上手小册》第6章:Pandas 时间序列分析(2024 最新版)
10 1
|
12天前
|
数据采集 SQL 数据可视化
《Pandas 简易速速上手小册》第5章:Pandas 数据合并与重塑(2024 最新版)
《Pandas 简易速速上手小册》第5章:Pandas 数据合并与重塑(2024 最新版)
29 1
|
12天前
|
数据采集 机器学习/深度学习 数据挖掘
《Pandas 简易速速上手小册》第4章:Pandas 数据探索与处理(2024 最新版)
《Pandas 简易速速上手小册》第4章:Pandas 数据探索与处理(2024 最新版)
36 1
|
12天前
|
数据采集 数据挖掘 数据处理
《Pandas 简易速速上手小册》第3章:Pandas 数据清洗基础(2024 最新版)
《Pandas 简易速速上手小册》第3章:Pandas 数据清洗基础(2024 最新版)
28 1
|
12天前
|
数据采集 数据挖掘 数据处理
《Pandas 简易速速上手小册》第1章:Pandas入门(2024 最新版)
《Pandas 简易速速上手小册》第1章:Pandas入门(2024 最新版)
10 1
|
8天前
|
数据挖掘 数据处理 索引
python常用pandas函数nlargest / nsmallest及其手动实现
python常用pandas函数nlargest / nsmallest及其手动实现
25 0