【发布时间】:2022-01-16 12:26:19
【问题描述】:
我需要使用此链接https://archive.ics.uci.edu/ml/machine-learning-databases/00529/diabetes_data_upload.csv 打开文件,我需要使用 pandas 库来使用 numpy 确定此表中每一列的类型,并将生成的列类型写入单独的 csv 文件。
所以我写了代码
import pandas as pd
import csv
link = "https://archive.ics.uci.edu/ml/machine-learning-databases/00529/diabetes_data_upload.csv"
table = pd.read_csv(link, skiprows = [0])#skip first row
result = table.dtypes
print(result,'\nAll results has been saved to results.csv file')
result.to_csv('results.csv')
如果我打开 result.csv 我会得到下一个信息:
,0
40,int64
Male,object
No,object
Yes,object
No.1,object
Yes.1,object
No.2,object
No.3,object
No.4,object
Yes.2,object
No.5,object
Yes.3,object
No.6,object
Yes.4,object
Yes.5,object
Yes.6,object
Positive,object
但我预计输出应该是
40,int64
Male,object
No,object
Yes,object
No,object
Yes,object
No,object
No,object
No,object
Yes,object
No,object
Yes,object
No,object
Yes,object
Yes,object
Yes,object
Positive,object
很明显 ,0 - 这是因为在打开文件时我们得到一个 'id' 行 但是为什么我们得到的不仅仅是“No”,而是“No.2”? 谁能解释我做错了什么?
【问题讨论】:
-
我认为附加数字是为了区分行值,因为它们不是唯一的。
Yes可以属于其值中包含Yes的任何列。您可以应用文本处理层来删除数字。 -
为什么在这里使用
skiprows?您正在切断第一行,其中包含每列的标签。我认为您的 read_csv 调用应该类似于table = pd.read_csv(link)