Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中将CSV文件读取到多个NumPy数组_Python_Arrays_Csv_Numpy - Fatal编程技术网

在Python中将CSV文件读取到多个NumPy数组

在Python中将CSV文件读取到多个NumPy数组,python,arrays,csv,numpy,Python,Arrays,Csv,Numpy,我试图将一个包含各种股票价格的.csv文件导入getData()函数中的Python脚本中,但我在索引方面遇到了问题,看不到如何解决这个问题 我对CSV和NumPy都是新手,因此不确定问题到底出在哪里,但当我尝试运行此代码时,我收到以下消息: 文件“./StockPlot.py”,第20行,在getData中 日期[i-1]=数据[0] 索引器:索引0超出大小为0的轴0的界限 import numpy as np import matplotlib.pyplot as plt import cs

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

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

文件“./StockPlot.py”,第20行,在getData中 日期[i-1]=数据[0] 索引器:索引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()
将numpy导入为np
将matplotlib.pyplot作为plt导入
导入csv
def getData():
日期=np.array([])
openPrice=np.array([])
closePrice=np.array([])
卷=np.array([])
i=1
以open('aapl.csv','rb')作为f:
reader=csv.reader(打开('aapl.csv'))
数据作为列表=列表(读卡器)
items=len(数据作为列表)
而我认为:
数据=数据作为列表[i]
日期[i-1]=数据[0]
openPrice[i-1]=数据[1]
收盘价[i-1]=数据[4]
卷[i-1]=数据[5]
i+=1
返回日期、开盘价、收盘价、数量
getData()
我试图读取的AAPL.csv文件中有以下行:

日期、开盘、高位、低位、收盘、成交量

7月26日17153.35153.93153.06153.4615415545

7月25日17151.80153.84151.80152.7418853932

7月24日17150.58152.44149.90152.0921493160


如果您能帮我解决这个问题,我将不胜感激。看起来data_as_list是每行列表的列表,在使用打印功能后,它似乎正在打印数据[0]等等。在while循环中,但不允许我将值分配给我创建的数组。

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 2D阵列:

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)

在我看来,使用熊猫更方便:

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 2D阵列:

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)