Python:大csv文件导入

ebdffaop  于 2022-12-28  发布在  Python
关注(0)|答案(3)|浏览(173)

我目前正在尝试用Python导入一个大的csv数据集,但没有成功。我有一个很大的股票报价的csv文件(一个股票列对应一个股票,另一个列对应一个股票的股息)我使用csv模块,但事实是我无法得到一个np.array,哪些列是股票报价,Python创建了一个np.array by rows,我想要一个np.array by column。我该怎么办?
谢谢你的帮助!

enxuqcxy

enxuqcxy1#

我已经创建了一小块函数,它可以读取csv文件的路径,并立即返回dict列表,然后您可以非常容易地循环通过列表,

def read_csv_data(path):
    """
        Reads CSV from given path and Return list of dict with Mapping
    """
    data = csv.reader(open(path))
    # Read the column names from the first line of the file
    fields = data.next()
    data_lines = []
    for row in data:
        items = dict(zip(fields, row))
        data_lines.append(items)
    return data_lines

也许这能帮到你
问候

sdnqo3pr

sdnqo3pr2#

您正在寻找的是ndarray.shapendarray.reshape函数。
Link
否则,你可以简单地读它的方式,然后做转置

x = x.transpose()

其中x是ndarray。

http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.transpose.html

所有这些小东西通常都在文档中。我建议先仔细阅读这些。

wvmv3b1j

wvmv3b1j3#

我推荐使用Pandas库。它还可以让你用小块来读取大的csv文件。这里有一个来自文档的例子:
数据:

year indiv zit xit
0 1977 A 1.2 0.60
1 1977 B 1.5 0.50
2 1977 C 1.7 0.80
3 1978 A 0.2 0.06
4 1978 B 0.7 0.20
5 1978 C 0.8 0.30
6 1978 D 0.9 0.50

指定块大小(您将获得一个可迭代对象):

reader = read_table(’tmp.sv’, sep=’|’, chunksize=4)

for chunk in reader:
.....: print chunk

输出:

year indiv zit xit
0 1977 A 1.2 0.60
1 1977 B 1.5 0.50
2 1977 C 1.7 0.80
3 1978 A 0.2 0.06
year indiv zit xit
0 1978 B 0.7 0.2
1 1978 C 0.8 0.3
2 1978 D 0.9 0.5

NB!如果你需要进一步操纵你的股票数据,Pandas无论如何都是最好的选择。

相关问题