pandas使用read_csv导入UCI银行营销数据集时索引错误如何解决
问题原因
- 目标CSV文件本身自带表头行,代码中额外传入
names参数会导致原表头被识别为第一行数据,同时覆盖原有列名 - 你自定义的列名只有17个,但该数据集实际共有21列,列数不匹配导致数据读取出错
- 无需额外配置
index_col=None,默认参数就不会将首列设为索引
正确实现代码
方案1:直接使用数据集自带的官方列名
import pandas as pd url = 'https://raw.githubusercontent.com/ThamuMnyulwa/bankMarketing/main/bank-additional-full.csv' raw_dataset = pd.read_csv(url, sep=';', na_values='?', skipinitialspace=False)
方案2:需要自定义列名的场景
如果要替换官方默认列名,需要补全全部21个字段的命名,同时新增header=0参数指定原有表头行需要被覆盖:
import pandas as pd url = 'https://raw.githubusercontent.com/ThamuMnyulwa/bankMarketing/main/bank-additional-full.csv' # 完整21列自定义命名,可根据需求调整 column_names = ["age", "job", "marital", "education", "default", "housing", "loan", "contact", "month", "day_of_week", "duration", "campaign", "pdays", "previous", "poutcome", "emp_var_rate", "cons_price_idx", "cons_conf_idx", "euribor3m", "nr_employed", "y"] raw_dataset = pd.read_csv(url, sep=';', na_values='?', header=0, names=column_names, skipinitialspace=False)
读取完成后可执行raw_dataset.shape验证,输出应为(41188, 21),符合该数据集的实际规模。
内容的提问来源于stack exchange,提问作者user4933
相关产品推荐
相关产品推荐

