pandas x轴转换为浮点

nqwrtyyt  于 2023-01-19  发布在  其他
关注(0)|答案(3)|浏览(119)

我试图将数据按年分组,并计算每一年的用户数,下面,我刚刚将日期列从浮点型转换为整型。
这是我的情节

如果你看到x轴,我的年代码似乎变成了一个浮动,每个代码是0.5滴答分开。
我怎么把它变成纯整数呢?
更改groupby具有相同的结果:

将year列转换为字符串格式后,刻度之间仍有2个空格

df['year'] = df['year'].astype(str)


yruzcnhs

yruzcnhs1#

使用整数数据会导致matplotlib轴只显示整数的期望是不合理的,最后,每个轴都是数值浮点轴。
刻度和标签是由定位器和格式化器决定的,matplotlib并不知道你只想画整数。
一些可能的解决方案:

告知默认定位器使用整数

默认的定位器是AutoLocator,它接受属性integer,因此您可以将此属性设置为True

ax.locator_params(integer=True)

示例:

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

data = pd.DataFrame({"year" : [2010,2011,2012,2013,2014],
                     "count" :[1000,2200,3890,5600,8000] })

ax = data.plot(x="year",y="count")
ax.locator_params(integer=True)

plt.show()

使用固定定位器

您可以使用ax.set_ticks()只勾选 Dataframe 中存在的年份。

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

data = pd.DataFrame({"year" : [2010,2011,2012,2013,2014],
                     "count" :[1000,2200,3890,5600,8000] })

data.plot(x="year",y="count")
plt.gca().set_xticks(data["year"].unique())
plt.show()

将年份转换为日期

你可以将年份栏转换为日期。对于日期,自动进行更好的标记。

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

data = pd.DataFrame({"year" : [2010,2011,2012,2013,2014],
                     "count" :[1000,2200,3890,5600,8000] })

data["year"] = pd.to_datetime(data["year"].astype(str), format="%Y")
ax = data.plot(x="year",y="count")

plt.show()

在所有情况下,您都将得到如下结果:

kpbwa7wx

kpbwa7wx2#

import matplotlib.pyplot as plt

# Use min and max to get the range of years to use in axis ticks
year_min = df['year'].min()
year_max = df['year'].max()

df['year'] = df['year'].astype(str) # Prevents conversion to float

plt.xticks(range(year_min, year_max, 1)) # Sets plot ticks to years within range

希望这有帮助!

tcomlyy6

tcomlyy63#

一个对我有效的解决方案是首先将列转换为int,然后在第二步中再次转换为string:

df['year'].astype(int)
df['year'].astype(str)

对于定位器的使用,这或多或少可能是一种“快速而肮脏”的解决方法。

相关问题