條形圖來(lái)自兩個(gè)變量列-熊貓數(shù)據(jù)操作(大部分)
ib
條形圖來(lái)自兩個(gè)變量列-熊貓數(shù)據(jù)操作(大部分),,,,,,,注意:解決方案張貼在下面我有一個(gè)時(shí)間索引表,其列BLIP只有兩個(gè)值XX和YY。目標(biāo)是顯示XX和YY的計(jì)數(shù)python條形圖顯示數(shù)據(jù),其中YY位于x軸下方。我試圖使用Wes 的《數(shù)據(jù)分析》第26頁(yè)中的代碼,從表中創(chuàng)建正確的數(shù)據(jù)結(jié)構(gòu),我認(rèn)為:df = .drop(=).('')group = ['f2','BLIP']df0 = .(group) = df0.si
注意:解決方案張貼在下面
我有一個(gè)時(shí)間索引表,其列BLIP只有兩個(gè)值XX和YY。目標(biāo)是顯示XX和YY的計(jì)數(shù),其中YY位于x軸下方。我試圖使用Wes 的《數(shù)據(jù)分析》第26頁(yè)中的代碼,從表中創(chuàng)建正確的數(shù)據(jù)結(jié)構(gòu),我認(rèn)為:
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)
導(dǎo)致以下錯(cuò)誤:
TypeError: 'numpy.int32' object is not callable
我在這里找到了這段寶貴的代碼片段,但找不到文檔來(lái)解釋它
data['values'].plot(kind='bar', color=data.positive.map({True: 'g', False: 'r'}))
這看起來(lái)很簡(jiǎn)單,但我對(duì)這個(gè)軸很感興趣
熊貓表格式類(lèi)似于
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
等等
根據(jù)杰西的建議我試過(guò)了
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()
這導(dǎo)致了
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()
可以使用手動(dòng)打印它:
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值,或者我是否必須創(chuàng)建一個(gè)包含真值和假值的新字段。似乎我必須從這個(gè)3NF數(shù)據(jù)框轉(zhuǎn)到某種對(duì)象,該對(duì)象按月份為我提供一個(gè)BLIP.計(jì)數(shù)的對(duì)象,然后我需要以某種方式將它們正確映射到繪圖python條形圖顯示數(shù)據(jù),我將表分為兩個(gè)數(shù)據(jù)幀和,然后嘗試ax..index,['BLIP',width=0.4,color='g',得到了這個(gè)錯(cuò)誤值error:形狀不匹配:對(duì)象不能廣播到單個(gè)形狀,這意味著您的表。index與['BLIP'的長(zhǎng)度不同。您可以使用.index代替上面發(fā)布的解決方案。Jesse的建議是正確的,但表['XX']應(yīng)該是表['BLIP']警告:睡眠不足時(shí)不要編碼??!相關(guān)評(píng)論和建議