ib
條形圖來自兩個變量列-熊貓數據操作(大部分),,,,,,,注意:解決方案張貼在下面我有一個時間索引表,其列BLIP只有兩個值XX和YY。目標是顯示XX和YY的計數python條形圖顯示數據,其中YY位于x軸下方。我試圖使用Wes 的《數據分析》第26頁中的代碼,從表中創建正確的數據結構,我認為:df = .drop(=).('')group = ['f2','BLIP']df0 = .(group) = df0.si
注意:解決方案張貼在下面
我有一個時間索引表,其列BLIP只有兩個值XX和YY。目標是顯示XX和YY的計數,其中YY位于x軸下方。我試圖使用Wes 的《數據分析》第26頁中的代碼,從表中創建正確的數據結構,我認為:
df = base_df.drop(columns=dropcols).set_index('Created')
group = ['f2','BLIP']
df0 = df_minus.groupby(group)
agg_counts = df0.size().unstack().fillna(0)
indexer = agg_counts.sum(1).argsort()
count_subset = agg_counts.take(indexer).copy()
table = count_subset.groupby('BLIP').resample('MS').count().unstack('BLIP')['BLIP']
chart = table.plot.bar(title = chart_title, x=None, color = ['green', 'red', 'grey']);
線路
agg_counts = df0.size().unstack().fillna(0)
導致以下錯誤:
TypeError: 'numpy.int32' object is not callable
我在這里找到了這段寶貴的代碼片段,但找不到文檔來解釋它
data['values'].plot(kind='bar', color=data.positive.map({True: 'g', False: 'r'}))
這看起來很簡單,但我對這個軸很感興趣
熊貓表格式類似于
create_date f1 f2 f3 BLIP f5...
dt_stamp X Y Z XX K1
dt_stamp S R Y YY K3
dt_stamp P P T XX K1
等等
根據杰西的建議我試過了
df_plus =df[df['BLIP']=='XX']
df_minus=df[df['BLIP']=='YY']
ax = plt.axes()
ax.bar(df_plus.index, df_plus['BLIP'], width=0.4, color='g')
ax.bar(df_neg.index, df_minus['BLIP'], width=0.4, color='r')
ax.autoscale()
plt.show()
這導致了
ValueError: shape mismatch: objects cannot be broadcast to a single shape
整體解決方案
df = base_df
plt.clf()
fig = plt.figure()
width = 8
height = 6
fig.set_size_inches(width, height)
chart_title = "YTD CR Trend Summary"
df_plus =df[df['BLIP'] == 'XX']
df_minus=df[df['BLIP']== 'IYY']
p = df_plus.resample('MS').count()['BLIP'].fillna(0)
n = df_minus.resample('MS').count()['BLIP'].apply(lambda x: int(-x))
print(chart_title, len(df), p.sum(), n.sum())
plt.clf()
fig = plt.figure()
# ax = fig.add_subplot(1, 1, 1)
ax = plt.axes(label=chart_title) #label suppresses warning
if p.sum() != False:
ax.bar(p.index, p, width=10, color='g')
if n.sum() != False:
ax.bar(n.index, n, width=10, color='r')
plt.suptitle(chart_title, fontsize=11)
filename = f'{graph_images_dir}{chart_title}.png'
print(f'Saving {filename}')
plt.savefig(filename, bbox_inches='tight', pad_inches=0.5, dpi=200)
plt.show()
可以使用手動打印它:
import matplotlib.pyplot as plt
ax = plt.axes()
ax.bar(table.index, table['XX'], width=0.4, color='g')
ax.bar(table.index, table['YY'], width=0.4, color='r')
我想知道我是否可以使用data..map直接映射到BLIP中的XX值,或者我是否必須創建一個包含真值和假值的新字段。似乎我必須從這個3NF數據框轉到某種對象,該對象按月份為我提供一個BLIP.計數的對象,然后我需要以某種方式將它們正確映射到繪圖python條形圖顯示數據,我將表分為兩個數據幀和,然后嘗試ax..index,['BLIP',width=0.4,color='g',得到了這個錯誤值error:形狀不匹配:對象不能廣播到單個形狀,這意味著您的表。index與['BLIP'的長度不同。您可以使用.index代替上面發布的解決方案。Jesse的建議是正確的,但表['XX']應該是表['BLIP']警告:睡眠不足時不要編碼!!相關評論和建議