如何根据给定的时间绘制数据?

2024-04-25 08:50:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个如下所示的数据集。你知道吗

Date;Time;Global_active_power;Global_reactive_power;Voltage;Global_intensity;Sub_metering_1;Sub_metering_2;Sub_metering_3
16/12/2006;17:24:00;4.216;0.418;234.840;18.400;0.000;1.000;17.000
16/12/2006;17:25:00;5.360;0.436;233.630;23.000;0.000;1.000;16.000
16/12/2006;17:26:00;5.374;0.498;233.290;23.000;0.000;2.000;17.000
16/12/2006;17:27:00;5.388;0.502;233.740;23.000;0.000;1.000;17.000
16/12/2006;17:28:00;3.666;0.528;235.680;15.800;0.000;1.000;17.000
16/12/2006;17:29:00;3.520;0.522;235.020;15.000;0.000;2.000;17.000
16/12/2006;17:30:00;3.702;0.520;235.090;15.800;0.000;1.000;17.000
16/12/2006;17:31:00;3.700;0.520;235.220;15.800;0.000;1.000;17.000
16/12/2006;17:32:00;3.668;0.510;233.990;15.800;0.000;1.000;17.000

我用熊猫把数据放到数据框里。数据集中的每一行都有多天间隔为1分钟的数据。你知道吗

我想使用python为每天(第1列)的电压和时间(第2列中显示)绘制单独的图表。我该怎么做?你知道吗


Tags: 数据date间隔time时间globalactivepower
3条回答
X = df.Date.unique() 

for i in X: #iterate over unique days
    temp_df = df[df.Date==i] #get df for specific day
    temp_df.plot(x = 'Time', y = 'Voltage') #plot

如果要更改x值,可以使用

x = np.arange(1, len(temp_df.Time), 1)
txt = '''Date;Time;Global_active_power;Global_reactive_power;Voltage;Global_intensity;Sub_metering_1;Sub_metering_2;Sub_metering_3
16/12/2006;17:24:00;4.216;0.418;234.840;18.400;0.000;1.000;17.000
16/12/2006;17:25:00;5.360;0.436;233.630;23.000;0.000;1.000;16.000
16/12/2006;17:26:00;5.374;0.498;233.290;23.000;0.000;2.000;17.000
16/12/2006;17:27:00;5.388;0.502;233.740;23.000;0.000;1.000;17.000
16/12/2006;17:28:00;3.666;0.528;235.680;15.800;0.000;1.000;17.000
16/12/2006;17:29:00;3.520;0.522;235.020;15.000;0.000;2.000;17.000
16/12/2006;17:30:00;3.702;0.520;235.090;15.800;0.000;1.000;17.000
16/12/2006;17:31:00;3.700;0.520;235.220;15.800;0.000;1.000;17.000
16/12/2006;17:32:00;3.668;0.510;233.990;15.800;0.000;1.000;17.000'''

from io import StringIO
f = StringIO(txt)
df = pd.read_table(f,sep =';' )
plt.plot(df['Time'],df['Voltage'])
plt.show()

提供输出: enter image description here

我相信这会成功的(我编辑了日期,所以我们有两个日期)

import pandas as pd
import matplotlib.pyplot as plt

%matplotlib inline #If you use Jupyter Notebook

df = pd.read_csv('test.csv', sep=';', usecols=['Date','Time','Voltage'])
unique_dates = df.Date.unique()
for date in unique_dates:
   print('Date: ' + date)
   df.loc[df.Date == date].plot.line('Time', 'Voltage')
   plt.show()

您将得到:

enter image description here

相关问题 更多 >