pandas 如何绘制图表来查看每个月与候选人离开率之间的趋势

mpbci0fu  于 2023-05-12  发布在  其他
关注(0)|答案(2)|浏览(162)

我有dataframe其中有一个月老虎钳沿着候选人左率。我需要看到的趋势基本上像一个季节性,看看如何流失率是去。
DF

Date         Candidate_%
01-07-2021   20.9%
01-08-2021   15.9%
01-09-2021   14.8%
01-10-2021   14.09%
01-11-2021   12.89%
01-12-2021   7.5%
01-01-2022   9.6%

....... 01-04-2023 8.5%
日期列为datetime 64 [ns]数据类型Candidate_%为datetime 64 [ns]数据类型
已尝试代码:

sns.lineplot(x='Date',y='Candidate_%',data=df,hue='Month_Year')

df.plot(x="Date", y=("Candidate_%"), style="o")

但没有一个能像预期的那样看到趋势。
预期:日期vise(月x轴)vise图以检查趋势,候选人_%作为y轴,线可以给予检查趋势的年份

wkyowqbh

wkyowqbh1#

首先,在sns.lineplot()中不需要hue参数。第二,似乎在“Candidate_%”列中有百分比符号,在绘图之前应该将其转换为数字数据类型。下面是一个示例,说明如何做到这一点:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

data = {
    'Date': ['01-07-2021', '01-08-2021', '01-09-2021', '01-10-2021', '01-11-2021', '01-12-2021', '01-01-2022', '01-04-2023'],
    'Candidate_%': ['20.9%', '15.9%', '14.8%', '14.09%', '12.89%', '7.5%', '9.6%', '8.5%']
}

df = pd.DataFrame(data)
df['Date'] = pd.to_datetime(df['Date'], format='%d-%m-%Y')
df['Candidate_%'] = df['Candidate_%'].str.rstrip('%').astype('float')

sns.lineplot(x='Date', y='Candidate_%', data=df)
plt.xticks(rotation=45)
plt.title("Candidate attrition rate trend")
plt.show()

希望能有所帮助。
对于第二个问题,可以通过显式指定x轴刻度和标签来实现。下面是一个例子:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

data = {
    'Date': ['01-07-2021', '01-08-2021', '01-09-2021', '01-10-2021', '01-11-2021', '01-12-2021', '01-01-2022', '01-04-2023'],
    'Candidate_%': ['20.9%', '15.9%', '14.8%', '14.09%', '12.89%', '7.5%', '9.6%', '8.5%']
}

df = pd.DataFrame(data)
df['Date'] = pd.to_datetime(df['Date'], format='%d-%m-%Y')
df['Candidate_%'] = df['Candidate_%'].str.rstrip('%').astype('float')

ax = sns.lineplot(x='Date', y='Candidate_%', data=df)
plt.xticks(rotation=45)
plt.title("Candidate attrition rate trend")

# Set the x-axis ticks and labels explicitly
ax.xaxis.set_major_locator(mdates.MonthLocator(interval=1))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%d-%m-%Y'))

plt.show()
u91tlkcl

u91tlkcl2#

IIUC,你可以尝试这样的东西:

(
    sns.lineplot(data=df, x="Date", y=df["Candidate_%"].str.rstrip("%").astype(float),
                 hue=df["Date"].str[-4:]).tick_params(axis="x", rotation=30)
)

输出:

相关问题