Python 数据处理与可视化指南

1. 导入 CSV 文件

在 Python 中,可以使用 pandas 库导入 CSV 文件,并将第一行作为列名(变量名)。

示例代码

import pandas as pd

# 读取 CSV 文件
df = pd.read_csv('your_file.csv')

# 显示前几行数据
print(df.head())

注意事项

  • 如果 CSV 文件的第一行不是列名,可以通过 header=None 参数指定。
  • 如果 CSV 文件使用其他分隔符(如制表符),可以使用 sep 参数指定。

2. 数据清洗

数据清洗是数据处理的重要步骤,以下是常见的数据清洗操作。

2.1 处理缺失值

检查缺失值
# 检查每列的缺失值数量
print(df.isnull().sum())
删除缺失值
# 删除包含缺失值的行
df_cleaned = df.dropna()
填充缺失值
# 用特定值填充缺失值
df_filled = df.fillna(0)

2.2 处理重复数据

检查重复数据
# 检查是否有重复行
print(df.duplicated().sum())
删除重复数据
# 删除完全重复的行
df_cleaned = df.drop_duplicates()

2.3 数据类型转换

查看数据类型
print(df.dtypes)
转换数据类型
# 将某一列转换为整数类型
df['column_name'] = df['column_name'].astype(int)

3. 替换特定值为缺失值

将表中的特定值(如 -9999)替换为 NaN

示例代码

import pandas as pd
import numpy as np

# 示例数据
data = {
    'A': [1, 2, -9999, 4],
    'B': [-9999, 5, 6, 7]
}

# 创建 DataFrame
df = pd.DataFrame(data)

# 将 -9999 替换为 NaN
df.replace(-9999, np.nan, inplace=True)

4. 删除全为缺失值的列

删除表中所有值为缺失值的列,并保存到新表。

示例代码

# 删除全部为缺失值的列
df_cleaned = df.dropna(axis=1, how='all')

# 保存到新的 CSV 文件
df_cleaned.to_csv('cleaned_data.csv', index=False)

5. 删除包含特定字符串的列

删除列名中包含特定字符串(如 "NEE")的列。

示例代码

# 删除列名包含 "NEE" 的列
df_cleaned = df.loc[:, ~df.columns.str.contains('NEE')]

# 保存到新的 CSV 文件
df_cleaned.to_csv('cleaned_data.csv', index=False)

6. 提取指定列

提取表中指定的列。

示例代码

# 指定要提取的列名
columns_to_extract = ['A', 'C']

# 提取指定列
df_extracted = df[columns_to_extract]

# 保存到新的 CSV 文件
df_extracted.to_csv('extracted_data.csv', index=False)

7. 时间序列绘图

将表中的时间列作为横坐标,绘制其他列的折线图。

示例代码

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

# 示例数据
data = {
    'Time': ['199601010100', '199601020200', '199601030300', '199601040400'],
    'Value': [10, 15, 13, 17]
}

# 创建 DataFrame
df = pd.DataFrame(data)

# 将 'Time' 列转换为时间格式
df['Time'] = pd.to_datetime(df['Time'], format='%Y%m%d%H%M')

# 设置 'Time' 列为索引
df.set_index('Time', inplace=True)

# 绘制折线图
plt.figure(figsize=(10, 6))
plt.plot(df.index, df['Value'], marker='o', linestyle='-')

# 设置时间格式
ax = plt.gca()
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d %H:%M'))  # 时间显示格式
ax.xaxis.set_major_locator(mdates.HourLocator(interval=6))  # 每 6 小时显示一个标签

# 设置时间范围
start_time = pd.to_datetime('1996-01-01 00:00')
end_time = pd.to_datetime('1996-01-04 12:00')
plt.xlim(start_time, end_time)

# 旋转时间标签
plt.xticks(rotation=45)

# 添加标题和标签
plt.title('Time Series Plot')
plt.xlabel('Time')
plt.ylabel('Value')

# 显示图形
plt.tight_layout()
plt.show()

8. 保存高质量图片

将绘制的图形保存为高质量图片。

示例代码

# 保存为高质量图片
plt.savefig('high_quality_plot.png', dpi=300, bbox_inches='tight', format='png')

支持的图片格式

  • PNG:无损压缩,适合保存高质量的位图。
  • JPEG:有损压缩,适合保存照片类图片。
  • SVG:矢量格式,适合放大和缩小。
  • PDF:矢量格式,适合打印和分享。

9. 时间字符串转换

将类似 199601010100 的字符串转换为时间格式。

示例代码

import pandas as pd

# 原始时间字符串
time_str = '199601010100'

# 转换为时间格式
time = pd.to_datetime(time_str, format='%Y%m%d%H%M')

# 打印结果
print(time)

10. 总结

  • 使用deepseek能够加快编程进度,提高编程效率,有些不过于复杂的问题直接问seepseek效率要高于查CSDN还有搜索引擎。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐