You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取GitHub仓库CSV做可视化时数据类型转换失败排查

问题根因
  • CSV读取不符合预期:手动通过names参数传入自定义表头时,没有跳过源文件自带的原生表头行,原生表头会被识别为第一行有效数据;另外读取12月销售数据时漏传了names=headers参数,导致单月数据的列结构和其余11个月不统一。
  • 字段类型转换失败:源CSV文件内存在大量重复插入的表头脏行(数据行内容和表头完全一致),同时夹杂全空行,这些异常内容导致pandas默认将所有字段识别为object类型,直接调用astype()转换数值类型时会触发解析错误。
修复后可直接运行的代码
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

headers = ['Order ID', 'Product', 'Quantity Ordered', 'Price Each', 'Order Date', 'Purchase Address']
month_file_list = [
    'Sales_January_2019.csv', 'Sales_February_2019.csv', 'Sales_March_2019.csv',
    'Sales_April_2019.csv', 'Sales_May_2019.csv', 'Sales_June_2019.csv',
    'Sales_July_2019.csv', 'Sales_August_2019.csv', 'Sales_September_2019.csv',
    'Sales_October_2019.csv', 'Sales_November_2019.csv', 'Sales_December_2019.csv'
]
base_raw_url = 'https://raw.githubusercontent.com/cshort2112/Sample-data/main/'

# 批量读取所有月份数据,避免重复代码
all_month_data = []
for file_name in month_file_list:
    # 读取时跳过源文件自带表头,统一使用自定义表头
    month_df = pd.read_csv(base_raw_url + file_name, names=headers, skiprows=1)
    all_month_data.append(month_df)

# 合并全年销售数据
annual_sales = pd.concat(all_month_data, ignore_index=True)

# 清洗脏数据:过滤混入的重复表头行、删除全空行
annual_sales = annual_sales[annual_sales['Order ID'] != 'Order ID']
annual_sales = annual_sales.dropna(how='all')

# 字段类型转换
annual_sales['Order ID'] = annual_sales['Order ID'].astype(int)
annual_sales['Quantity Ordered'] = annual_sales['Quantity Ordered'].astype(int)
annual_sales['Price Each'] = annual_sales['Price Each'].astype(float)
annual_sales['Order Date'] = pd.to_datetime(annual_sales['Order Date'])

# 校验转换结果
print(annual_sales.dtypes)
annual_sales.head()
关键修复说明
  • 读取CSV时新增skiprows=1参数,跳过源文件自带的表头行,避免原生表头被误识别为有效数据。
  • 统一所有月份数据的读取逻辑,补全12月数据读取时缺失的表头参数,保证全年数据列结构完全一致。
  • 增加脏数据清洗步骤,先过滤掉混入的重复表头行、空行,再做类型转换,从根源上解决object类型无法转数值的问题。
  • 用循环批量读取文件替代逐月份重复写读取逻辑,减少冗余代码,避免参数漏写的低级错误。

内容的提问来源于stack exchange,提问作者Collin Short

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 17:57:26