有没有直接的方法将 CSV 文件的内容导入记录数组,就像 R 的 read.table()
, read.delim()
和 read.csv()
数据框?
或者我应该使用 csv.reader()
然后应用 numpy.core.records.fromrecords()
?
原文由 hatmatrix 发布,翻译遵循 CC BY-SA 4.0 许可协议
有没有直接的方法将 CSV 文件的内容导入记录数组,就像 R 的 read.table()
, read.delim()
和 read.csv()
数据框?
或者我应该使用 csv.reader()
然后应用 numpy.core.records.fromrecords()
?
原文由 hatmatrix 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 pandas.read_csv
:
import pandas as pd
df = pd.read_csv('myfile.csv', sep=',', header=None)
print(df.values)
array([[ 1. , 2. , 3. ],
[ 4. , 5.5, 6. ]])
这给出了一个 pandas DataFrame
它提供了 许多有用的数据操作函数,这些函数不能直接用于 numpy 记录数组。
DataFrame
是一个二维标记数据结构,具有可能不同类型的列。您可以将其视为电子表格或 SQL 表…
我还会推荐 numpy.genfromtxt
。但是,由于问题要求 记录数组,而不是普通数组,因此需要将 dtype=None
参数添加到 genfromtxt
调用中:
import numpy as np
np.genfromtxt('myfile.csv', delimiter=',')
对于以下 'myfile.csv'
:
1.0, 2, 3
4, 5.5, 6
上面的代码给出了一个数组:
array([[ 1. , 2. , 3. ],
[ 4. , 5.5, 6. ]])
和
np.genfromtxt('myfile.csv', delimiter=',', dtype=None)
给出一个记录数组:
array([(1.0, 2.0, 3), (4.0, 5.5, 6)],
dtype=[('f0', '<f8'), ('f1', '<f8'), ('f2', '<i4')])
这样做的好处是 可以轻松导入具有多种数据类型(包括字符串) 的文件。
原文由 Lee 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
使用
numpy.genfromtxt()
通过将delimiter
kwarg 设置为逗号: