提问人:fred 提问时间:3/5/2023 最后编辑:fred 更新时间:3/5/2023 访问量:148
从 CSV 文件解析 Pandas 日期
Pandas date parsing from CSV file
问:
我有一个csv文件:
year;month;day;hour;min;sec;temperature
2022;10;27;13;36;42;5.835
2022;10;27;14;36;42;6.435
2022;10;27;15;36;42;6.335
2022;10;27;16;36;42;6.435
我想从中绘制一个简单的图表。我无法组合单独的日期时间部分。这是我的代码:
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime
def parser(year, month, day, hour, minute, second):
return pd.to_datetime(day + '.' + month + '.' + year + ' ' + hour + ':' + minute + ':' + second
df = pd.read_csv('temp_data.csv',sep=';',parse_dates={'datetime':['year', 'month', 'day', 'hour', 'min', 'sec']}, date_parser=parser,index_col=0)
time = df['datetime'].values
temp = df['temperature'].values
plt.plot(time, temp)
答:
1赞
Corralien
3/5/2023
#1
更新
我希望 x 轴日期格式为:27.10.22
您必须手动格式化。
只需使用 df.plot
:
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
# df = pd.read_csv(...)
ax = df.plot()
loc = mdates.DayLocator()
fmt = mdates.DateFormatter('%d.%m.%y')
ax.xaxis.set_major_locator(loc)
ax.xaxis.set_major_formatter(fmt)
plt.show()
输出:
评论
0赞
fred
3/5/2023
谢谢,我也得到了图表,但不幸的是无法获得正确的 x 轴日期。恳请看图片:链接
0赞
fred
3/5/2023
我希望 x 轴日期格式为:27.10.22
0赞
fred
3/5/2023
谢谢!x 轴格式是正确的,但数字是错误的。我认为问题出在功能上:parse_dates。熊猫知道吗,例如,“第二”意味着它是准时的一部分......这是图片:链接
0赞
fred
3/5/2023
还尝试过:ax = df.plot(x='datetime',y='tempc')
0赞
fred
3/5/2023
如果我在控制台中编写:df.info(),它说日期时间类型是“对象”,但应该是“datetime[ns]”
1赞
sergenp
3/5/2023
#2
我无法使用 python 3.11 让您的代码在我的电脑上运行
df = pd.read_csv(
"temp_data.csv",
sep=";",
parse_dates={"datetime": ["year", "month", "day", "hour", "min", "sec"]},
date_parser=parser,
# index_col=0, this line was causing the problem
)
我的情节不会显示得那么好,所以我也必须这样做:
plt.plot(time, temp)
plt.show(block=True)
评论
time = df['datetime'].values"
datetime