pandas交叉表绘图不显示计数为零的间隔



file_path是一个excel文件,其中一列的年份编号从1940年到2018年,另一列的"划分1976年"表示1976年以前或1976年现在。

# Load excel file as a pandas data_frame
data = pd.read_excel(file_path, sheet_name=5, skiprows=1)
data_frame = pd.DataFrame(data)
# create an extra column in data_frame with bin from 1930 to 2020 with 10 years interval
data_frame['bin Year'] = pd.cut(data_frame.Year, bins=np.arange(1930, 2030, 10, dtype=int))
# Plot stacked bar plot
color_table = pd.crosstab(index=data_frame['bin Year'], columns=data_frame['Divide Year 1976'])
color_table.plot(kind='bar', figsize=(6.5, 3.5), stacked=True, legend=None, edgecolor='black')
# Add xticks
plt.xticks(locs, ['1930s','1940s','1950s','1960s','1970s','1980s','1990s','2000s','2010s'], fontsize=8, rotation=45)

这里的问题是colortable.plot((函数会自动忽略计数为0的间隔,在我的例子中是1940-1950。如何强制代码以特定间隔显示计数为零的条形图?

在此处输入图像描述

在交叉表中使用参数dropna

color_table = pd.crosstab(
index=data_frame['bin Year'],
columns=data_frame['Divide Year 1976'],
dropna=False)

参见文档

最新更新