这看起来很简单,但对于我的生活,我无法弄清楚。
我是 Python 和 Seaborn 的新手,我正在 PythonAnywhere 在线完成所有这些工作。
我想要做的就是在 seaborn 中创建一个简单的条形图,在 x 轴上正确排列日期(即从左到右升序)。
当我尝试这个时:
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import datetime
import pandas as pd
import seaborn as sns
emp = pd.DataFrame([[32, "5/31/2018"], [3, "2/28/2018"], [40, "11/30/2017"], [50, "8/31/2017"], [51, "5/31/2017"]],
columns=["jobs", "12monthsEnding"])
fig = plt.figure(figsize = (10,7))
sns.barplot(x = "12monthsEnding", y = "uniqueClientExits", data = emp,
estimator = sum, ci = None)
fig.autofmt_xdate()
plt.show()
Run Code Online (Sandbox Code Playgroud)
我明白了:
然后当我尝试将对象转换为日期时间时:
(注意:我在下面使用 pd.to_datetime() 是为了尝试重新创建当我在 pd.read_csv() 中使用 parse_dates 时会发生什么,这就是我实际创建数据帧的方式。)
emp = …Run Code Online (Sandbox Code Playgroud) 我创建了一个漂亮整洁的分组数据框,然后我在一个简单的seaborn条形图中使用了这些数据.但是,当我尝试向条形图添加标签时,我收到以下错误:
ValueError:无法将float NaN转换为整数
我知道这是因为其中一个分组类别只有一个值(而不是两个).如何将其标记为"0"?
我已经在这个兔子洞里走了一整天,但没有找到任何东西.以下是我尝试过的事情(以多种方式):
pd.fillna().我使用了很多经常遇到这类问题的数据,所以我真的很感激帮助解决这个问题.看起来很简单.我错过了什么?谢谢!
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# my initial data set
d = {'year' : [2014,2014,2014,2015,2015,],
'status' : ["n","y","n","n","n"],
'num' : [1,1,1,1,1]}
df = pd.DataFrame(d)
# groupby to create another dataframe
df2 = (df["status"]
.groupby(df["year"])
.value_counts(normalize=True)
.rename("Percent")
.apply(lambda x: x*100)
.reset_index())
# create my bar plot
f = plt.figure(figsize = (11,8.5))
ax1 = plt.subplot(2,2,1)
sns.barplot(x="year",
y="Percent",
hue="status",
hue_order = ["n","y"],
data=df2,
ci = …Run Code Online (Sandbox Code Playgroud)