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

2024-09-28 17:03:46 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

文件“/股票图.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()

在苹果.csv我要读取的文件有以下行:

Date, Open, High, Low, Close, Volume

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循环中打印数据[0]等,但不允许我将值赋给我创建的数组


Tags: 文件csvimportdatadateasnparray
1条回答
网友
1楼 · 发布于 2024-09-28 17:03:46

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

import pandas as pd

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

结果:

^{pr2}$

作为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)

相关问题 更多 >