首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python打印选定的csv列

python打印选定的csv列
EN

Stack Overflow用户
提问于 2018-11-06 00:03:38
回答 1查看 5.6K关注 0票数 0

我有一个包含数据的*.csv文件,其中第一列包含"YYYY-MM"格式的日期,第二列包含字母,还有两列数据。

它看起来像这样:

代码语言:javascript
复制
Date     inflation rate     CPI-Value      LIBOR-Rate

2003-09  inflation  rate    80.172         0.81
2003-10  inflation  rate    80.132         0.88
2003-11  inflation  rate    80.264         0.69
2003-12  inflation  rate    80.430         0.75
2004-01  inflation  rate    81.163         0.75
2004-02  inflation  rate    81.244         0.75
2004-03  inflation  rate    81.344         0.75
2004-04  inflation  rate    81.436         0.75
2004-05  inflation  rate    81.501         0.75
2004-06  inflation  rate    81.355         0.81
2004-07  inflation  rate    81.494         1.06
2004-08  inflation  rate    81.426         1.31
2004-09  inflation  rate    81.771         1.44
2004-10  inflation  rate    81.757         1.38
2004-11  inflation  rate    81.866         1.38
2004-12  inflation  rate    81.790         1.44
2005-01  inflation  rate    81.994         1.75
2005-02  inflation  rate    82.062         1.94
2005-03  inflation  rate    82.210         2.13
2005-04  inflation  rate    82.219         2.13
2005-05  inflation  rate    82.165         2.06

我想绘制一个以日期为x轴的折线图,一个包含CPI和LIBOR值的图表。

我试过使用

代码语言:javascript
复制
x, y = np.genfromtxt(CPI_df, usecols=(0, 2), unpack=True, delimiter=',')

plt.plot(x, y, 'ro--')
plt.show()

但是有一个值错误,说明某些行有一列而不是两列。但是,我已经检查了csv文件,没有丢失数据。

感谢我能得到的任何帮助,谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-11-06 02:21:48

正在使用的文件格式真的很糟糕。首先,在header和data之间有一个空行,因此需要跳过前两行,并且不能使用header。

接下来,在一些列之间有两个空格作为分隔符,但在应该是单个列的字符串之间也有两个空格。

现在,如果您确实需要按原样使用此文件,并希望使用numpy读取它,那么您还会遇到第一列不包含数字值的问题。因此,您将需要使用dtype。

下面的代码将读取文件并将日期绘制为字符串。

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt

a = np.genfromtxt("data/inflation.txt", usecols=(0, 3), skip_header=2, dtype=None, encoding=None)
x = a["f0"]
y = a["f1"]

plt.plot(x, y, 'ro--')
plt.show()

或者如果你想绘制日期图,

代码语言:javascript
复制
import numpy as np
import datetime
import matplotlib.pyplot as plt

a = np.genfromtxt("data/inflation.txt", usecols=(0, 3), skip_header=2, dtype=None, encoding=None,
                  converters={0: lambda x: datetime.datetime.strptime(x, "%Y-%m")}, unpack=True)
x = a["f0"]
y = a["f1"]

plt.plot(x, y, 'ro--')
plt.show()

如果使用pandas而不是numpy,这将变得更容易一些。绘制字符串:

代码语言:javascript
复制
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("data/inflation.txt", delim_whitespace=True)

plt.plot(df["Date"], df["CPI-Value"], 'ro--')
plt.show()

或绘制日期:

代码语言:javascript
复制
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("data/inflation.txt", delim_whitespace=True, 
                 parse_dates=[0], infer_datetime_format=True)

plt.plot(df["Date"], df["CPI-Value"], 'ro--')
plt.show()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53157958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档