2012-05-07 52 views
7

嘿我试图读熊猫的CSV文件,你可以download from here(euribor率我想你可以想象我想要这个文件的原因!)。该文件是一个CSV文件,但它以某种奇怪的方式。如果您在Excel文件中导入的格式pandas阅读csv的方向

02/01/2012,03/01/2012,04/01/2012,,,, 
1w 0.652,0.626,0.606,,,, 
2w,0.738,0.716,0.700,,,, 

行为与第一列去可达12m(但我有给你,你可以下载一个样本的链接)。我想用熊猫阅读它,但我无法以正确的方式阅读它。熊猫有一个内置的读取csv文件的功能,但不知何故它期望以行为导向而不是以列为导向。我想要做的是获得标记为3m的行上的信息并且具有值和日期以绘制该索引的时间变化。但我无法处理这个问题。我知道我可以读取数据与

import pandas 
data = pandas.io.read_csv("file.csv",parse_dates=True) 

但它会工作,如果csv文件将以某种方式转置。 H

回答

0

我从来没有用过熊猫进行csv处理。我只是使用标准的Python lib csv函数,因为它们使用迭代器。

import csv 
myCSVfile=r"c:/Documents and Settings/Jason/Desktop/hist_EURIBOR_2012.csv" 
f=open(myCSVfile,"r") 
reader=csv.reader(f,delimiter=',') 
data=[] 
for l in reader: 
    if l[0].strip()=="3m": 
     data.append(l) 

f.close() 
+0

很明显,您可能需要在导入后清除数据,例如你可以检查数据类型,删除空字段(或用None替换)这个版本处理整个数据集,但只返回一行,所以你可以在那个地方使用break或者附加其他有趣的数据。例如有趣= [ '1瓦特', '3米', '9米'];如果l [0] .strip()有趣:... –

4

一个大熊猫据帧有一个.transpose()方法,但它不喜欢在这个文件中的所有空行。以下是如何得到它清理:

df = pandas.read_csv("hist_EURIBOR_2012.csv") # Read the file 
df = df[:15] # Chop off the empty rows beyond 12m 
df2 = df.transpose() 
df2 = df2[:88] # Chop off what were empty columns (I guess you should increase 88 as more data is added. 

当然,你可以把这些一起链条:

df2 = pandas.read_csv("hist_EURIBOR_2012.csv")[:15].transpose()[:88] 

然后df2['3m']是你想要的数据,但该日期仍存储为字符串。我不太确定如何将其转换为DateIndex

+1

在pandas 0.8.0中,您可以使用DatetimeIndex(array_of_strings)或to_datetime(array_of_strings)将它们解析为日期 –

+0

谢谢我将尝试解决方案提出,并最终我会等待熊猫0.8.0,据我所知将在今年5月可用 –

+0

难道你不能使用此选项'skip_blank_lines:布尔,默认真'?如果设置为False,空行将没有问题吧? – Sebastian