【发布时间】:2016-12-30 23:46:47
【问题描述】:
我正在使用一个开放数据集,该数据集记录 1999 年至 2015 年的学校入学情况。但是,该数据集在 CSV 中为未来几年预先分配了列,即使这些列是空的。
数据可以在http://www.gov.pe.ca/opendata/OD9%20Offical%20School%20Enrollments%201999%20-2015.csv查看
这是我的代码:
#Read current open data set (OD34) from URL and store in an array called enrollment
url = "http://www.gov.pe.ca/opendata/OD9%20Offical%20School%20Enrollments%201999%20-2015.csv?"
col_names = ['School_Name','1999','2000','2001','2002','2003','2004','2005','2006','2007','2008','2009','2010','2011','2012','2013','2014','2015']
enrollment = pandas.read_csv(url, header=None, skiprows=1, names=col_names, nrows=2)
print(enrollment)
print(enrollment.shape)
print(type(enrollment))
代码确实会转值,但过多的逗号意味着每所学校都有几十个 NaN 值。 DataFrame 确实显示为 2,18 数组,但 print(enrollment) 显示的是 NaN 值。
编辑:我在 pandas.read_csv 语句中添加了na_filter=False,当我print(enrollment) 时,无关的 NaN 值消失了,但看起来每一列(一年)都有所有数据,而不是对齐每年的入学人数.
这是一个数据示例。
School Name,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Alberton Elementary School,229,231,237,213,225,218,219,214,194,186,167,175,178,158,148,129,127,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
【问题讨论】:
-
dropna DataFrame 方法是您要找的吗?
-
我绝对可以使用 dropna 在导入后删除 NA。查看我的编辑,我使用 'na_filter=False' 来获得相同的结果。
-
enrollment.dropna(axis=1) -
再说一次,你的问题是什么?
-
@piRSquared 起初我试图弄清楚如何排除无关的 NaN 值(这似乎可以使用 na_filter=False 解决)但现在我试图确保每列的值都是被正确解析。鉴于我在“打印(注册)”时看到的结果,我似乎并非如此,但因为今天是我第一次尝试使用 Pandas,而上周是我第一次尝试使用 Python,我并不完全是一定要诚实。