【问题标题】:Plot graph is not corrected when using multiple csv files using panda python [duplicate]使用 panda python [重复] 使用多个 csv 文件时,绘图图未更正
【发布时间】:2019-12-19 17:29:10
【问题描述】:

这里我有三个 csv 文件,我将这三个 cv 文件合并在一起。根据求和方程,我试图找到 Y 值。

然后,y 值随时间绘制。当我绘制图表时,我的第一行和图表的最后一行相互连接。

我不知道为什么会这样。谁能帮我解决这个问题?

我的代码:

df1 = pd.read_csv('data1.csv',"," )
df2 = pd.read_csv('data2.csv',"," )
df3 = pd.read_csv('data3.csv',"," )


df1 = pd.DataFrame(df1, columns=['date','time','x'])
df2 = df1.copy()
df3 = df1.copy()
data = df1.append([df2, df3])

等式之后:

我的求和方程,

n = 两行之间的时间差

我的代码:

def y_convert(X,time):
   Y=0
  if x == 10:            
      for k in range(0,time):
         Y=np.sum(X*k)
    else:            
       for k in range(0,time):
       Y=np.sum(X*k)
return Y

然后将时差转换为分钟,然后应用此代码找到 y

data['time_diff'] = pd.to_datetime(data["time"])
data['delta'] = (data['time_diff']-data['time_diff'].shift()).fillna(0)
data['t'] = data['delta'].apply(lambda x: x  / np.timedelta64(1,'m')).astype('int64') % (24*60)

X = data['X'].astype(int)
time=data['t'].astype(int)

Y = data.apply(lambda x: y_convert(x.X,x.time), axis=1)

然后我尝试绘制图表

data['date'] = pd.to_datetime(data['date'] + " " + data['time'],    format='%d/%m/%Y %H:%M:%S', dayfirst=True)

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(data['date'], data['Y'])
ax.set_xlabel
ax.set_ylabel
plt.show()

绘图图:

我的 csv 文件:(一个 csv 文件的格式)

【问题讨论】:

  • @ZarakiKenpachi 不,这个问题没有我的问题的答案。

标签: python-3.x pandas time


【解决方案1】:

我认为问题在于排序。

解决方案是DataFrame.sort_values:

data['date'] = pd.to_datetime(data['date'] + " " + data['time'], 
                              format='%d/%m/%Y %H:%M:%S', dayfirst=True)


data = data.sort_values('date')

【讨论】:

  • 它工作正常。非常感谢。你能解释一下为什么我们在合并三个 csv 文件时使用 sort_value 吗?
  • @team - 因为数据 - 追加后没有排序,所以在图中链接第一个和最后一个值。
  • 知道了,谢谢你的帮助。
猜你喜欢
  • 2020-04-03
  • 2017-07-14
  • 2013-01-30
  • 2020-06-21
  • 1970-01-01
  • 2020-12-05
  • 2021-07-09
  • 2017-07-20
  • 2017-04-01
相关资源
最近更新 更多