# 前回のプログラムの読込
%run 1.ipynb
df.hea
stationery_counts = df['Name'].value_counts()
stationery_counts
df['Name'].value_counts()
で Name
列の各値ごとの個数を集計
ノート 5 ボールペン 4 ホッチキス 3 のり 2 セロハンテープ 1 Name: Name, dtype: int64
もしpandasを用いないで集計すると
# pandasを利用しないで集計
count_dict = {}
with open('dataset/stationery.csv') as f:
for idx, row in enumerate(f):
if idx == 0:
continue
colmuns = row.rstrip().split(',')
name = colmuns[0]
if name in count_dict:
count_dict[name] += 1
else:
count_dict[name] = 1
for key, value in count_dict.items():
print(key, value)
pandasを用いないと非常に長くなる
グループ集計
# 前回のプログラムの読込
%run 2.ipynb
df.head()
# 文房具の名前でグループ化した合計金額を表示
grouped_df = df.groupby(by='Name').sum() 今回は合計
total_price = grouped_df['Price']
total_price
df.groupby(by=列名)
で列名で指定した列の値によってグループ化する- 合計値
sum()
や平均値mean()
の計算したいものを追記する
Name
のり 220
セロハンテープ 90
ノート 750
ホッチキス 1200
ボールペン 490
Name: Price, dtype: int64
pandasを使用しなかったら
# pandasを利用しないでgoupbyと同じ処理
count_dict = {}
with open('dataset/stationery.csv') as f:
for idx, row in enumerate(f):
if idx == 0:
continue
colmuns = row.rstrip().split(',')
name = colmuns[0]
price = int(colmuns[1])
if name in count_dict:
count_dict[name] += price
else:
count_dict[name] = price
for key, value in count_dict.items():
print(key, value)
コメント