小编13s*_*en1的帖子

Python将年中的某天转换为轴上的月份

我有一个时间序列,我想逐年绘制。我希望数据是每天的,但轴每个月都显示为“Jan”、“Feb”等。

目前我可以获得每日数据,但轴是 1-366(一年中的一天)。

或者我可以将月轴设为 1、2、3 等(通过将索引更改为 df.index.month),但是数据是每月的。

如何将年轴中的日期转换为月份?或者我该怎么做?

代码显示每日数据,但轴错误:

# import
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# create fake time series dataframe
index = pd.date_range(start='01-Jan-2012', end='31-12-2018', freq='D')
data = np.random.randn(len(index))
df = pd.DataFrame(data, index, columns=['Data'])

# pivot to get by day in rows, then year in columns
df_pivot = pd.pivot_table(df, index=df.index.dayofyear, columns=df.index.year, values='Data')
df_pivot.plot()
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
plt.show()
Run Code Online (Sandbox Code Playgroud)

以 0、50、100、150 等为轴的图形结果 - 显示日期而不是月份,如 Jan、Feb、Mar 等

python datetime matplotlib pandas

6
推荐指数
1
解决办法
1813
查看次数

为什么 matplotlib .plot(kind='bar') 绘图与 .plot() 如此不同

这可能是一个非常愚蠢的问题,但是当使用 .plot() 绘制 Pandas DataFrame 时,它​​非常快并生成具有适当索引的图表。一旦我尝试将其更改为条形图,它似乎就失去了所有格式并且索引变得疯狂。为什么会这样呢?有没有一种简单的方法来绘制与折线图格式相同的条形图?

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

df = pd.DataFrame()
df['Date'] = pd.date_range(start='01/01/2012', end='31/12/2018')
df['Value'] = np.random.randint(low=5, high=100, size=len(df))
df.set_index('Date', inplace=True)

df.plot()
plt.show()

df.plot(kind='bar')
plt.show()
Run Code Online (Sandbox Code Playgroud)

df.plot()

df.plot(kind='bar'

更新:为了进行比较,如果我获取数据并将其放入 Excel,然后创建一个线图和一个条形图(“列”)图,它会立即转换该图并保留线图的轴标签。如果我尝试用 Python 生成许多(数千个)带有多年日常数据的条形图,这需要很长时间。在 Python 中是否有等效的方法来执行此 Excel 转换?

Excel 绘图

python matplotlib

2
推荐指数
1
解决办法
2万
查看次数

仅重命名pandas数据框中的最后一列(说明重复的标题)

需要重命名数据框中的最后一列,问题是有很多同名列(这是有原因的),因此我无法在线使用其他示例中的代码。有没有一种方法可以使用仅隔离最后一列的特定内容?

我试图做这样的事情 df.rename(columns={df.columns[-1]: 'Test'}, inplace=True)

但这意味着所有具有相同标题的列都更改为“测试”,而我只希望最后一个更改。

我有点需要类似的东西,df.columns[-1] = 'Test' 但这是行不通的。

python dataframe pandas

1
推荐指数
1
解决办法
344
查看次数

标签 统计

python ×3

matplotlib ×2

pandas ×2

dataframe ×1

datetime ×1