我正在尝试使用以下代码在一个图中创建两个条形图:
import matplotlib.pyplot as plt
import pandas as pd
df = read_csv(...)
temp1 = df['Credit_History'].value_counts(ascending=True)
temp2 = df.pivot_table(values='Loan_Status',index=['Credit_History'],aggfunc=lambda x: x.map({'Y':1,'N':0}).mean())
fig = plt.figure(figsize=(8,4))
ax1 = fig.add_subplot(121)
temp1.plot(kind='bar')
ax2 = fig.add_subplot(122)
temp2.plot(kind = 'bar')
图形设置正确,创建了子图,并绘制了temp1,但是当我尝试绘制temp2(数据透视表)时,它会在我身上创建一个新图形而不是绘制到第二个子图上。这似乎只发生在pivot_table上。我能够将temp1两次绘制到两个子图上,即使我首先尝试绘制temp2,它仍会创建一个新的图形。
以下是正在发生的事情的屏幕截图:
答案 0 :(得分:1)
可能导致问题的原因是您正在配对 pandas Series ( temp1 来自16
调用)图和 pandas DataFrame ( temp2 形式value_counts
调用)情节。由于您的数据透视表会产生一列数据帧,因此请考虑squeeze()
将数据帧向下转换为一维数据集。然后从那里开始照常:
pivot_table
下面演示希望 df 中的随机数据复制原始数据结构:
temp1 = df['Credit_History'].value_counts(ascending=True).sort_index()
temp2 = df.pivot_table(values='Loan_Status', index='Credit_History',
aggfunc=lambda x: x.map({'Y':1,'N':0}).mean())
temp2 = temp2.squeeze()