gpt4 book ai didi

python - 将 x 轴绘制为日期

转载 作者:行者123 更新时间:2023-11-28 20:34:03 25 4
gpt4 key购买 nike

我正在尝试对数据进行一些分析。我得到了 csv 文件并将其转换为 pandas 数据框。数据看起来像这样。它有几列,但我试图将 x 轴绘制为日期列。 .

Pandas 数据框看起来像这样

print (df.head(10)

cus-id date value_limit
0 10173 2011-06-12 455
1 95062 2011-09-11 455
2 171081 2011-07-05 212
3 122867 2011-08-18 123
4 107186 2011-11-23 334
5 171085 2011-09-02 376
6 169767 2011-07-03 34
7 80170 2011-03-23 34
8 154178 2011-10-02 34
9 3494 2011-01-01 34

我正在尝试绘制日期数据,因为同一日期有多个值。为此,我试图将 x-asis 刻度绘制为日期。因为日期列中的最小日期是 2011-01-01,最大日期是 2012-04-20。

我试过这样的东西

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import datetime
import matplotlib.dates as mdates

df = pd.read_csv('rio_data.csv', delimiter=',')
print (df.head(10))
d = []
for dat in df.date:
# print (dat)
d.append(datetime.strptime(df['date'], '%Y-%m-%d'))
days = dates.DayLocator()
datemin = datetime(2011, 1, 1)
datemax = datetime(2012, 4, 20)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.xaxis.set_major_locator(days)
ax.set_xlim(datemin, datemax)
ax.set_ylabel('Count values')

但是我收到了这个错误。

 AttributeError: 'DataFrame' object has no attribute 'date'

我正在尝试将日期绘制为 x 轴,它应该如下所示。 enter image description here

谁能帮我把 x 轴画成日期列。我会很感激。

最佳答案

将索引设置为datetime dtype

如果您通过使用 pd.to_datetime(...) 转换日期来将索引设置为日期时间系列,matplotlib 将为您处理 x 轴。

这是您可以如何处理此可视化的一个最小示例。

直接使用 pandas.DataFrame.plot 绘图,它使用 matplotlib 作为默认后端。

简单示例:

import pandas as pd
import matplotlib.pyplot as plt

date_time = ["2011-09-01", "2011-08-01", "2011-07-01", "2011-06-01", "2011-05-01"]

# convert the list of strings to a datetime and .date will remove the time component
date_time = pd.to_datetime(date_time).date
temp = [2, 4, 6, 4, 6]

DF = pd.DataFrame({'temp': temp}, index=date_time)

ax = DF.plot(x_compat=True, rot=90, figsize=(6, 5))

这将产生如下所示的图:

enter image description here

设置索引让事情变得简单

重要的是,将 DataFrame 索引设置为 datetime 系列允许 matplotlib 处理时间序列数据上的 x 轴,而无需太多帮助。

Follow this link for detailed explanation on spacing axis ticks (specifically dates)

关于python - 将 x 轴绘制为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49418248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com