Python 3.x python打印选定的csv列

Python 3.x python打印选定的csv列,python-3.x,csv,matplotlib,Python 3.x,Csv,Matplotlib,我有一个*.csv文件,其中包含的数据包括第一列格式为“YYYY-MM”的日期、第二列上的字母以及两列数据 它看起来像这样: 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

我有一个
*.csv
文件,其中包含的数据包括第一列格式为
“YYYY-MM”
的日期、第二列上的字母以及两列数据

它看起来像这样:

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值的图

我试过使用

x, y = np.genfromtxt(CPI_df, usecols=(0, 2), unpack=True, delimiter=',')

plt.plot(x, y, 'ro--')
plt.show()
但是存在一个值错误,即某些行有一列而不是两列。但是,我已经检查了csv文件,没有丢失数据


谢谢你的帮助,谢谢

目前使用的文件格式真的很不幸。首先,标题和数据之间有一个空行,因此需要跳过前两行,不能使用标题。
接下来,在某些列之间,以及在作为单个列的字符串之间,有两个空格作为分隔符

现在,如果您确实需要按原样使用此文件,并且希望使用numpy来读取它,那么您还有一个问题,即第一列不包含任何数值。因此,您需要使用数据类型

下面将读取文件并将日期打印为字符串

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()
或者如果你想绘制日期

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()
如果使用熊猫而不是numpy,这会变得容易一些。打印字符串:

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()
或绘图日期:

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()

您使用了“
分隔符=”,“
,但您引用的文件中似乎没有逗号,尽管它是一个csv文件。这是否意味着我不需要使用分隔符?如果您显示的三行实际上是文件的前三行,那么很明显没有逗号。不过,我不确定在这种情况下还应该使用什么分隔符,因为单元格中似乎也有空格。如果有帮助,我将使用jupyter笔记本来运行代码。不知道有没有区别。不,在这种情况下没关系。如果您在编辑器中打开文件,并将前十行逐字复制到您的问题中,则会有所帮助。我已尝试运行适用于我的数据的pandas脚本,但在绘制字符串时收到一个关键错误。打印返回的日期TypeError:“非类型”对象不可下标。谢谢你的帮助!