来自 csv 文件:将第一列的 unix 时间戳转换为年份并创建图表

from csv file :Convert unix timestamp of first column into year and create a graph

我正在尝试从 csv 文件创建绘图。在csv文件中,第一列是时间戳,第二列到第六列是不同的一方。我想创建一个图表,其中 x 轴是年份(即 2004 年),并用 y 轴上各方的百分比值绘制图表。

csv 文件如下所示:

 date,CSU/CDU,SPD,Gruene,FDP,Linke
 891468000.0,34,44,6,5,6
 891986400.0,34,44,6,5,6
 892677600.0,35,43,6,5,5
 894405600.0,32,46,6,6,5
 895010400.0,33,46,5,5,5

我试过下面的代码。

 import numpy as np
 import matplotlib.pyplot as plt


 with open('polldata.csv') as f:

    names = f.readline().strip().split(',')
    data = np.loadtxt(f, delimiter=',')

 cols = data.shape[1]
 for n in range (1,cols):     
     plt.plot(data[:,0],data[:,n],label=names[n])

 plt.xlabel('year',fontsize=14)
 plt.ylabel('parties',fontsize=14)  

 plt.show()

从我的 csv 文件的第一列,我想将该时间戳转换为年份。另外,我需要在条形图中显示,以便可以轻松识别颜色区分方。

我希望图表看起来与下页中的第 5 个相似

(https://moderndata.plot.ly/elections-analysis-in-r-python-and-ggplot2-9-charts-from-4-countries/)

提前致谢!

您可以使用 pandas 中的 csv reader。文档在这里:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html

看起来像这样:

将 pandas 导入为 pd

import matplotlib.pyplot as plt
import datetime

df = pd.read_csv("polldata.csv", delimiter=',')

df['date'] = df['date'].apply(lambda ts: datetime.datetime.utcfromtimestamp(ts).strftime('%Y'))
print(df)

ols = df.columns
for n in range (len(cols)):
    plt.plot(df,label=cols[n])

plt.xlabel('year',fontsize=14)
plt.ylabel('parties',fontsize=14)

plt.show()

它将打印:

   date  CSU/CDU  SPD  Gruene  FDP  Linke
0  1998       34   44       6    5      6
1  1998       34   44       6    5      6
2  1998       35   43       6    5      5
3  1998       32   46       6    6      5
4  1998       33   46       5    5      5

这让你开始了吗?