━━━━━━━━━━━━━━━━━━━━━━
「独学だと続かない…」そんな悩み、ありませんか?
キノコード監修の学習サービスで、今度こそ習得しよう
━━━━━━━━━━━━━━━━━━━━━━
プログラミング学習サービス「キノクエスト」は、
このチャンネルの動画と連動した問題演習・質問サポートで
「途中で挫折しない」仕組みを徹底しています。
▶︎【個人のお客様】まずは無料で始める
https://kino-code.com/kq_service_a/?utm_source=youtube.com&utm_medium=referral&utm_campaign=zos_zpJjqF0_gaiyo_kq_service_a
【挫折しない3つの理由】
① 動画で学ぶ → 問題を解く → 理解が定着するサイクル
② わからないところは質問OK ─ ひとりで悩まない
③ 初心者から実務レベルまで、ステップバイステップで進める
▼【法人のご担当者様】社員のスキルアップ・DX人材育成をご検討ならこちら
https://kino-code.com/kinoquest-forbiz/?utm_source=youtube.com&utm_medium=referral&utm_campaign=zos_zpJjqF0_gaiyo_kinoquest-forb
▼チャンネル登録はこちら
https://www.youtube.com/@kinocode?sub_confirmation=1
▼目次
00:00 はじめに
01:07 Pandasのインポート
01:18 表示する列数・行数を変更
01:54 データフレームの読み込み
02:40 グループごとに集計する方法
03:38 グループごとに平均を算出する方法
03:57 複数のグループごとの平均を算出する方法
04:20 小数点以下省略する方法
05:02 グループごとの合計を算出する方法
05:10 グループごとのデータ数を数える方法
05:21 グループごとのデータ数を数える方法(欠損値を含む)
05:37 グループごとのn番目のデータ取得
06:19 グループごとの最大値する方法
06:24 グループごとの最小値する方法
06:37 複数要素でグルーピングする方法
07:38 複数の方法で集計ができるaggメソッド
08:14 groupbyを使って桁区切りで表示する方法
08:36 平均と合計、桁区切り表示
08:52 aggメソッド(複数計算)
09:27 groupbyで自作の関数適用
▼自己紹介
現在:フリーランス(マーケティング関連の人工知能開発、データ分析や業務自動化など)
前職:リクルート
▼SNS
Twitter : https://twitter.com/kino_code/likes
Facebook :https://www.facebook.com/%E3%82%AD%E3%83%8E%E3%82%B3%E3%83%BC%E3%83%89-105693727500005/
▼文字書き起こし
読み込む前の準備として概要欄に記載したキノコードのサイトにExcelファイルを用意しています。
それをダウンロードして、学習用のJupyter Labを保存しているフォルダにに保存してください。
それではパソコン画面に切り替えてレッスンを進めていきましょう。
import pandas as pd
まず、Pandasをインポートする記述を書きます。
「as」を使ってPandasを「pd」という名前で使えるようにしましょう。
実行します。
pd.options.display.max_rows = 10
pd.options.display.max_columns = None
レッスン03で表示する列数・行数を変更はset_opitonでやってきました。
今回は、pd.options.displayで変更をしてみましょう。
pd.options.displayと書いてmax_rowと書きます。そして、これに10を代入します。
これで表示する行数を10行に変更することができます。
次に、表示する列数の変更をします。
max_columnsと書いて、Noneを代入します。
これで表示する列数・行数を変更ができました。
df = pd.read_excel('sample.xlsx',sheet_name='実績管理表')
df
続いてレッスンで使うデータを説明します。
Excelデータを使います。
このデータはあるアパレル会社の販売データになります。
社員ごとに何をいくら売上したのかがわかります。
このExcelの中の実績管理表というシートを使います。
エクセルを読み取るにはread_excelメソッドを使いました。
これはレッスン6で説明しました。
エクセルのシートを指定して読み取ることができます。
heet_nameという引数にシート名を渡せばよいです。
実行してみましょう。
読み取れました。
df.groupby('氏名')
それでは氏名ごとに合計や平均など色々な集計をしてみましょう。
エクセルでいうとsumifs関数であったり、averageifs関数、countifs関数になります。
SQLでいうとGroupbyです。
Pythonの場合だと、PandasのGroupbyメソッドを使います。
データフレームが代入されている変数のあとにドット、groupby、丸括弧。
丸括弧の中に、集計したいグループを記述します。
氏名ごとに集計をしたいので、氏名を記述します。
実行してみましょう。
集計結果が返ってきません。
これはオブジェクト生成されただけで、このオブジェクトに対して何も処理をしていないからです。
df.groupby('氏名').mean()
このgroupbyメソッドに平均を求めならmean、合計を求めるならsumなどを追加することで集計することが可能です。
平均を求めてみましょう。
平均は、meanを使います。
実行します。
平均を集計することができました。
ただ、コードだと数値型のカラムがすべて平均になっていしまいました。
df[['氏名','売上金額']].groupby('氏名').mean()
売上金額だけ平均にしたい場合はどのようにしたらいいでしょうか?
その場合は、二重括弧で氏名と売上金額だけを抽出し、groupbyの丸括弧の中に氏名を記述します。列の取得の仕方はレッスン4で説明しています。
実行します。
売上金額だけ平均を算出することができました。
ただし、今の平均の算出方法だと小数点以下がたくさん表示されて読みにくいですよね。
pd.options.display.float_format = '{:.0f}'.format
そこで、小数点以下を表示させない設定に変更しましょう。
動画の最初で表示する行数や列数を設定しましたが、同じようにpd.options.displayを使います。float_formatと記述します。
これは小数点以下0桁を省略する記述です。
実行してみましょう。
df[['氏名','売上金額']].groupby('氏名').mean()
それではもう一度、実行してみましょう。
小数点以下が表示されず、すっきりなりました。
df[['氏名','売上金額']].groupby('氏名').sum()
合計を算出した場合は、sumです。
実行してみましょう。
合計が表示されました。
df[['氏名','売上金額']].groupby('氏名').count()
データ数を数えたい場合はcountでできます
ただし、countメソッドだと、欠損値は数えてくれません。
df[['氏名','売上金額']].groupby('氏名').size()
欠損値も数えたい場合は、sizeメソッドを使います。
実行します。Seriesにて出力がされましたが、こうすれば欠損値も数えることができます。
続きは文字書き起こしブログにて。
▼文字書き起こしブログ
https://kino-code.com/pandas_groupby/
#PythonとPandas #Pandas入門 #データ集計
▼お仕事のお問い合わせ
キノコードでは、仕事の自動化の開発業務&コンサルティング業務のみを現在受け付けております。
お問い合わせ先かTwitterのDMか、「キノコードトップページ→概要」にあるメールアドレスまでお問い合わせください。