更新5/22/18:@aorr在原始问题下回答。
我正在尝试为数千个输入收集每个ID和该ID的数据。
我正在尝试收集每个ID的每一行,对日期进行排序,然后绘制每个ID +加数据并导出每个ID的图表。
被修改 样本数据:
Col name:Id Date O G Company Date2
aab72ffd-4d0b-4c62-b6fe-4c55b98be9a0 3/1/1999 180.66 673 A 1/1/1996
10a1d17b-1f5c-4a4d-8186-e4dbf62e3bf2 3/1/2003 69.03 282.5 D 3/1/2002
所需的输出数组/图表,但按日期排序。
到目前为止我输入的代码成功创建了不同数据类型的索引数组。现在,我只是试图遍历所有行并组织数据,以便根据ID打印/写入单个数组/图表。
这是我到目前为止所做的:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
#import data
mydataset = pd.read_csv('input_test.csv', dtype=None)
x = mydataset.iloc[:,:].values
y = mydataset.iloc[:,:].values
#Id
b = np.array((x[:,0]), dtype=str)
#Date
c = np.array((x[:,1]), dtype=str)
# O Var
d = np.array((x[:,2]), dtype=int)
# G var
e = np.array((x[:,3]), dtype=int)
#Stack
f = np.vstack((b,c,d,e))
#Transpose array
g = f.T
#Plot data
plt.figure()
plt.plot(x[:,2], y[:,3], label ='Rate over time')
plt.xlabel('m')
plt.ylabel('r/m')
#plt.legend()
根据@aorr回复更新 感谢帮助我们的新手。
在Y轴上绘制O和G,在X轴上绘制日期,每个Id 。一切都根据日期排序。这个数据扩展的重要出发点。根据更新更多关注。
for Id in data['Id'].unique():
fig, ax = plt.subplots(figsize=(5,3))
plot_data = data.query("Id==@Id").sort_values('Date')
_ = plot_data.plot(x='Date',y='O', ax=ax)
_ = plot_data.plot(x='Date', y='G', ax=ax)
#Plot Company name in each chart
for Company in plot_data[Company]:
_ = plt.title(Company)
#Plot Date2 Event onto X-axis
for Date2 in plot_data[Date2]:
_ = plt.axvline(Date2)
答案 0 :(得分:0)
您是否尝试使用pandas
解决此问题?我认为您不需要为每个元素创建numpy
数组,pandas
已经在内部将它们存储为ndarrays
。
import matplotlib.pyplot as plt
data = pd.read_csv('input_test.csv', parse_dates=['date'])
for id in data['id'].unique():
fig, ax = plt.subplots(figsize=(5,3))
plot_data = data.query("id==@id").sort_values('date')
_ = plot_data.plot(x='O',y='G', ax=ax)
那几乎可以让你到处都是。 pandas可视化文档here有很多其他非常有用的选项可以快速浏览数据,但是如果你对图的外观很挑剔那么你会想要直接matplotlib
用于数字和轴布局。