Python 将CSV文件作为数据表导入numpy,导致形状不正确

Python 将CSV文件作为数据表导入numpy,导致形状不正确,python,csv,numpy,Python,Csv,Numpy,我试图使用numpy将CSV文件作为数据表读取,但遇到了一些问题 这是我的CSV文件,全文如下: week,count,is_successful,percent,percent_tablet,percent_desktop 1,2005,0,23,32,45 1,3805,1,18,22,55 2,1872,0,35,22,43 2,2990,1,22,21,57 3,2005,0,24,24,48 3,3805,1,27,21,52 这是我的numpy代码: data = np.genfr

我试图使用numpy将CSV文件作为数据表读取,但遇到了一些问题

这是我的CSV文件,全文如下:

week,count,is_successful,percent,percent_tablet,percent_desktop
1,2005,0,23,32,45
1,3805,1,18,22,55
2,1872,0,35,22,43
2,2990,1,22,21,57
3,2005,0,24,24,48
3,3805,1,27,21,52
这是我的numpy代码:

data = np.genfromtxt("data.csv", delimiter=',', names=True)
print data.shape

这给了我
(6,)
-它看到行,但没有列。为什么不将其作为表导入?

当您命名了列时,由
genfromtxt
创建的数组是一维数组。使用列名作为键访问列,例如
data['week']

您可以使用
view
方法获得数据的二维视图:
table=data.view(np.float64)。从以下位置重塑(len(data),-1)

控制我们从中读取的字符串序列的主要方式 将文件转换为其他类型是为了设置dtype参数。 此参数的可接受值为:

  • 单个类型,例如dtype=float。输出将是具有给定数据类型的2D,除非名称已与每个列关联
    names参数的使用(见下文)。请注意,dtype=float是
    genfromtxt的默认值

  • 类型的序列,例如dtype=(int、float、float)

  • 逗号分隔的字符串,如dtype=“i4,f8,| S3”

  • 有两个键“名称”和“格式”的字典

  • 元组序列(名称、类型),如dtype=[('a',int),('B',float)]

  • 现有的numpy.dtype对象

  • 特殊值为零。在这种情况下,列的类型将由数据本身决定(见下文)

在除第一种情况外的所有情况下,输出都将是具有结构化数据类型的1D数组。此数据类型的字段数与序列中的项数相同。字段名是用names关键字定义的


本质上,如果数据是异构的或未指定的,则会得到一个数据类型数组。只有当它是齐次的时,你才能得到一个矩阵。

你可以使用
skiprows
并将
名称保留为默认值
False
。这将绕过将数据组装成结构的过程

data = np.genfromtxt("data.csv", delimiter=',', skiprows=1)
print data.shape

导入pprint的功能是什么;pprint.pprint(data)
show?您的示例有6个数据行和6列,请尝试添加一行以确保您看到的内容……如果您还没有习惯于使用
numpy
,我会看看:
pd.read\u csv(“data.csv”)
将为您提供与您期望的内容更相似的内容。这个问题几乎是对