【问题标题】:Reading a CSV file to multiple NumPy arrays in Python在 Python 中将 CSV 文件读取到多个 NumPy 数组
【发布时间】:2018-01-03 14:03:18
【问题描述】:

我正在尝试将一个包含各种股票价格的 .csv 文件导入到 getData() 函数内的 Python 脚本中,但我遇到了索引问题并且看不到如何解决问题。

我是 CSV 和 NumPy 的新手,所以不确定问题出在哪里,但是当我尝试运行此代码时,我收到以下信息:

文件“../StockPlot.py”,第 20 行,在 getData 日期[i-1] = 数据[0] IndexError:索引 0 超出轴 0 的范围,大小为 0

import numpy as np
import matplotlib.pyplot as plt
import csv

def getData():
  date = np.array([])
  openPrice = np.array([])
  closePrice = np.array([])
  volume = np.array([])

  i = 1
  with open('aapl.csv', 'rb') as f:
      reader = csv.reader(open('aapl.csv'))
      data_as_list = list(reader)
      items = len(data_as_list)

      while i < items:
          data = data_as_list[i]
          date[i-1] = data[0]
          openPrice[i-1] = data[1]
          closePrice[i-1] = data[4]
          volume[i-1] = data[5]
          i += 1

  return date, openPrice, closePrice, volume

getData()

我尝试读取的 AAPL.csv 文件包含以下形式的行:

日期、开盘价、最高价、最低价、收盘价、成交量

26-Jul-17,153.35,153.93,153.06,153.46,15415545

25-Jul-17,151.80,153.84,151.80,152.74,18853932

24-Jul-17,150.58,152.44,149.90,152.09,21493160

我将不胜感激任何帮助解决这个问题,似乎 data_as_list 是每行列表的列表,并且在使用 print 函数之后,它似乎在 while 循环内打印 data[0] 等,但是不允许我将值分配给我创建的数组

【问题讨论】:

    标签: python arrays csv numpy


    【解决方案1】:

    IMO 使用 Pandas 更方便:

    import pandas as pd
    
    fn = r'/path/to/AAPL.csv'    
    df = pd.read_csv(fn, skipinitialspace=True, parse_dates=['Date'])
    

    结果:

    In [83]: df
    Out[83]:
            Date    Open    High     Low   Close    Volume
    0 2017-07-26  153.35  153.93  153.06  153.46  15415545
    1 2017-07-25  151.80  153.84  151.80  152.74  18853932
    2 2017-07-24  150.58  152.44  149.90  152.09  21493160
    

    作为 numpy 二维数组:

    In [84]: df.values
    Out[84]:
    array([[Timestamp('2017-07-26 00:00:00'), 153.35, 153.93, 153.06, 153.46, 15415545],
           [Timestamp('2017-07-25 00:00:00'), 151.8, 153.84, 151.8, 152.74, 18853932],
           [Timestamp('2017-07-24 00:00:00'), 150.58, 152.44, 149.9, 152.09, 21493160]], dtype=object)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-14
      • 2021-07-05
      • 2019-08-24
      • 2011-02-21
      • 2014-02-01
      • 2020-06-07
      • 2019-01-29
      • 2023-03-27
      相关资源
      最近更新 更多