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

时间:2019-01-11 11:44:48

标签: python python-3.x csv matplotlib unix-timestamp

我正在尝试从csv文件创建图。在csv文件中,第一列是时间戳,第二列至第六列是不同的参与者。我想创建一个x轴为year(即2004)的图形,并用y轴上的百分比表示各方的值。

csv文件如下:

+ (NSString *) postDataToRemoteLogWithMessage:(NSString *)errorString{
    // Send post request to webservice
    NSString *errorData =[NSString stringWithFormat:@"errorString=%@",errorString];
    NSData *postData = [errorData dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
    NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setURL:[NSURL URLWithString:@"http://mywebserviceurl"]];
    [request setHTTPMethod:@"POST"];
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [request setHTTPBody:postData];
    NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    if(conn) {
        //NSLog(@"Connection Successful");
    } else {
        //NSLog(@"Connection could not be made");
    }
}

我尝试了以下代码。

 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

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

我希望该图看起来像下一页中的第5张图

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

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用熊猫提供的csv阅读器。文档在这里:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html

它看起来像这样:

将熊猫作为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

这会让您入门吗?