pandasでデータフレームを複数作成し、matplotlibで作図したいと考えています。
実現したい内容
丁度以下の2枚の画像を合体し、プラスとマイナスを-20,000~20,000の範囲で、凡例を表示した画像にしたいです。
同じax
に対して、.bar
をすれば良いのでは?という考えでコードを記載しましたが、以下のError文で弾かれてしまいます。
今後表の微調整も行いたいので、できればオブジェクト指向で作成したいなと考えています。
以下サンプルとしてご利用ください。
Error文
1TypeError: 'AxesSubplot' object is not subscriptable
python
1import pandas as pd 2from io import StringIO 3import matplotlib.pyplot as plt 4 5# テストデータ 6s = """列1,trade_date,product_class,instrument_id,instrument,broker_code,broker_name,item,volume 712,20220606,A,60018,A 2206,11560,G,SELL,181.0 838,20220606,A,90018,A 2209,11560,G,SELL,1.0 956,20220606,AA,60019,AA 2206,11560,G,SELL,395.0 1084,20220606,B,60005,B 2206,11560,G,SELL,1895.0 11103,20220606,B,90005,B 2209,11560,G,SELL,1179.0 128282,20220531,A,60018,A 2206,11560,G,BUY,153.0 1356,20220606,AA,60019,AA 2206,11560,G,BUY,395.0 148282,20220531,A,60018,A 2206,11560,G,SELL,153.0 158305,20220531,AA,10019,AA 2206,11560,G,SELL,8129.0 168345,20220531,B,10005,BB 2206,11560,G,SELL,5708.0 178638,20220531,A,60018,A 2206,11560,G,SELL,556.0 188662,20220531,B,60005,B 2206,11560,G,SELL,5862.0 199995,20220606,A,60018,A 2206,11560,G,SELL,50.00 209996,20220606,AA,90018,AA 2209,11560,G,BUY,150.00""" 21df = pd.read_csv(StringIO(s), dtype={'trade_date':str}) 22 23#データフレームに計算式を入れる 24 25df.loc[df['item']=='SELL', 'volume'] *= -1 26df.loc[df['product_class']=='AA', 'volume'] *= 0.1 27 28df_1 = df[(df['product_class']=='AA') | (df['product_class']=='A')] 29df_1 = df[(df['product_class']=='AA') | (df['product_class']=='A')] 30 31input_csv_GOLD_BUY =df_1[df_1["item"] == "BUY"] 32 33input_csv_GOLD_SELL =df_1[df_1["item"] == "SELL"] 34 35df_BUY = input_csv_GOLD_BUY.groupby(['trade_date', 'instrument'])['volume'].sum().unstack('instrument').plot(kind='bar', stacked=True) 36df_SELL = input_csv_GOLD_SELL.groupby(['trade_date', 'instrument'])['volume'].sum().unstack('instrument').plot(kind='bar', stacked=True) 37
以上、よろしくお願い致します。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/06/10 12:23
2022/06/10 23:48