【Pythonプログラミング】Pandasの基本 (後編) 〜 表形式データ・データ分析 〜 初心者向けのDataFrameの操作入門!

Sdílet
Vložit
  • čas přidán 6. 09. 2024

Komentáře • 45

  • @axljoe2000
    @axljoe2000 Před 2 lety +3

    動画内の解説がイメージ付でcheetsheetよりも分かり易いだけでなく解説例の選定が秀逸

    • @pythonvtuber9917
      @pythonvtuber9917  Před 2 lety +1

      コメントありがとうございます😊 mergeやgroupbyは便利ですが、動きを理解するのが難しいかな...と思って図解を多めに作ってみました!!

  • @user-bt2ge4pf7w
    @user-bt2ge4pf7w Před rokem +4

    丁寧な説明ありがとうございます。
    ただ次のコードは動作するのですが、
    result = df.groupby('担当者').mean()
    display(result)
    次のアラートがでてしまいます。
    FutureWarning: The default value of numeric_only in DataFrameGroupBy.mean is deprecated.
    In a future version, numeric_only will default to False.
    Either specify numeric_only or select only columns which should be valid for the function.
    result = df.groupby('担当者').mean()
    次のようにするとアラートがでなくなるようです。
    result = df.groupby('担当者').mean('売上')

  • @spoon5110
    @spoon5110 Před 2 lety +1

    とても分かりやすいです!
    何か操作をした後に、displayで結果を見せてくれるので、確実に理解できた気がしました。
    行の色分けとかも、めっちゃ分かり易かったです!!

    • @pythonvtuber9917
      @pythonvtuber9917  Před 2 lety +1

      ご視聴いただきありがとうございます😊
      行の色分けや実演の見せ方など、色々工夫しながら動画を作ったので、そう言ってもらえて嬉しいです!!

  • @yashige-sp8gw
    @yashige-sp8gw Před 2 lety +1

    すごくわかりやすい動画でした。例も身近なものだったので良かったです。

    • @pythonvtuber9917
      @pythonvtuber9917  Před 2 lety

      ご視聴いただきありがとうございます!
      長い動画ですが少しでもPandasの理解のお役に立てていたら嬉しいです😊

  • @ipg4140
    @ipg4140 Před 2 lety +1

    Python初心者ですが、私にはスクールの動画より分かりやすかったです。
    動画作成大変かと思いますが、楽しく拝聴させて頂きます。

    • @pythonvtuber9917
      @pythonvtuber9917  Před 2 lety

      Pandasの動画は前編・後編と、長尺動画で見るのが大変だったかと思いますが、そう言ってくださって嬉しい限りです😊
      更新頻度があまり高くないチャンネルなんですが、楽しんでもらえたらと思います!

  • @user-tb1nw6cn4h
    @user-tb1nw6cn4h Před 10 měsíci

    15:12 mergeによる結合

  • @Mayu.Learning
    @Mayu.Learning Před měsícem

    聞き心地良くて分かりやすい動画のおかげで、ゼロから色々なことができるようになりました!
    例えば、cvsデータを日付ごとにgroupbyでまとめたdfをエクセルに出力して活用しています。
    グループごとに空白行で仕切ってイイ感じなんですが、インデックスを各グループごとに振り直す方法に苦戦しています。
    調べて色々試すんですがうまく行かず…そもそもインデックスを操作しようとする観点が間違っているのでしょうか?

    • @pythonvtuber9917
      @pythonvtuber9917  Před měsícem +1

      ご視聴いただきありがとうございます!
      インデックスを振り直すというのはよくあるので、観点としては間違ってないです。for文を使えば出来そうですが、あまりスマートには書けなさそうですね🤔1つのグループに対して1つのdfを作った方が扱いやすいようにも感じますがどうでしょうか?(集計するときだけconcatするなど)

  • @morimochi
    @morimochi Před 2 lety +2

    質問失礼します。
    クラス ポイント
    1A   5
    1A   1
    2A   1
    3A   1
    1A   1
    3C   1
    2B   1
    1B   1
    2A   2
    3C   2
    3A   2
    このデータを
    import pandas as pd
    df=pd.read_excel('bel.xlsx')
    x = df.groupby("クラス").sum()
    というコードでクラスごとのポイント合計を出しました。

    クラス ポイント
    1A   12
    1B   3
    2A   55
    2B   32
    2C   2
    3A   5
    3B   2
    3C   5
    ポイントだけをリストに分けて[12,3,55...]とまとめるにはどうしたらいいでしょうか?
    ご回答よろしくお願いします。

    • @pythonvtuber9917
      @pythonvtuber9917  Před 2 lety +3

      ご質問ありがとうございます!
      x['ポイント'].to_list()ってやったら良いのでは無いでしょうか?

    • @morimochi
      @morimochi Před 2 lety +2

      @@pythonvtuber9917 とても早い対応ありがとうございます!!
      出来ました!!ありがとうございます!!これからも頑張ってください!!

  • @mi-vs7yw
    @mi-vs7yw Před rokem

    動画、とってもわかりやすかったです!
    動画内で使用しているデータファイルはどこかに公開されていますか?
    他の方のコメントにあったドライブはなくなっているようなので

    • @pythonvtuber9917
      @pythonvtuber9917  Před rokem +1

      データファイルなのですがトラブルがありまして現在は非公開とさせていただいております。申し訳ないです...😵

  • @3rdvoyager248
    @3rdvoyager248 Před rokem

    concatを使って、データフレームの行と行の間に新しく行を追加したいのですが、
    どのようにすればよいですか?

  • @AK-us6px
    @AK-us6px Před 2 lety +1

    googleスプレッドシートのQuery関数のように表の列の順序を入れ替えて、さらに列の数字を加工(例えば二倍するなど)したのち、別の表と合体する方法はPANDASではあるのでしょうか?

    • @pythonvtuber9917
      @pythonvtuber9917  Před 2 lety +1

      それぞれメソッドがありますね。
      ・順序入れ替え → df.sort_values(by=['カラム名'])
      ・2倍 → df['num'] = df['num'] * 2
      ・合体 → pd.merge か pd.concat
      などですね!

    • @AK-us6px
      @AK-us6px Před 2 lety

      @@pythonvtuber9917 助かります。ありがとうございます!

  • @user-vw4iu4tr4d
    @user-vw4iu4tr4d Před rokem

    文字を小さくする方法教えて下さい

    • @pythonvtuber9917
      @pythonvtuber9917  Před rokem

      DataFrameのフォントサイズですかね?私はやったことないですが以下のサイトのように IPython.core.display.HTMLを使用するのはいかがでしょうか?
      eigo.rumisunheart.com/2019/03/01/how-to-enlarge-font-size-of-pandas-dataframe/

  • @lagavulin1968
    @lagavulin1968 Před 3 lety

    説明はとても分かりやすくて理解できました!
    動画で使用しているデータを何処かに置いて頂けないでしょうか?? 
    再現するのが大変というか手間がかかるので。(笑)

    • @pythonvtuber9917
      @pythonvtuber9917  Před 3 lety +2

      ご視聴いただき、ありがとうございます!!
      動画の実演で使用したExcelファイルを以下のGoogle Driveにアップロードしました!ぜひ使ってPandasを試してみてください😊
      drive.google.com/drive/folders/1uyEmJ0-bEVcJAJAloXL7cQTFpiLDg1nM?usp=sharing

    • @lagavulin1968
      @lagavulin1968 Před 3 lety

      @@pythonvtuber9917
      ありがとうございます!!!

  • @kawayamato2096
    @kawayamato2096 Před rokem

    どのサイトよりも公式よりもPandasの解説を分かりやすく発信していただきありがとうございます。
    Pythonを勉強しながらコードを書いているところですが、
    イメージした動きをどう書いたらいいか分からなくなってしまいました。
    何かヒントになることやサイトを教えていただけませんでしょうか?
    やりたいことは
    1.〇月のエクセルで作った勤務表を取得
    2.各個人の連続する期間「14日間の内2日間(1日~14日、2日~15日等)」を抽出
    3.休みの個数を数えて2個未満の期間を判定
    4.判定した結果True、Falseだった期間を新しいエクセルファイルにチェックシートとして作成
    ■現状
    1はできたんですが、2から試行錯誤していてどう書けばいいか詰まっています。
    イメージしているのは
    ①空のディクショナリーを作る
    ②pandasで取得したデータフレームdfから各個人毎for文を使い
    {日付をkey:勤務か休み}ディクショナリーに格納。
    人数分のディクショナリーができる
    ③keyを1:14のように期間を指定する関数を作りif文でvalueを判定
    これをfor文で期間を1日づつずらし,2:15,3:16のようにする
    ④新しい名前でエクセルファイルを作り保存
    このような流れでコードを書けたらと思っています。
    現状はここまで書きました。
    命名規則に則っていないと思いますが今は勘弁してください。
    import pandas as pd
    df = pd.read_excel("○○.xlsx")
    for index, data in df.iterrows():
    kinmu = str(data)
    print(type(kinmu))
    print(index)
    print(kinmu)
    #この次の行に指定した範囲を入れるディクショナリーをつくる?
    #ここに書く
    yasumi = kinmu.count("休")
    print(yasumi)
    if yasumi < 2:
    print("ダメ")
    elif yasumi > 2:
    print("OK")
    print('---------')
    日付、名前、勤務が各人毎出てきて
    とりあえず全員分抜き出して1か月分の休みはカウントしました
    ②の各個人毎に辞書に格納するのと、
    ③の期間を指定して判定していく処理が分かりません
    ヒントをいただけたら幸いです。

    • @pythonvtuber9917
      @pythonvtuber9917  Před rokem

      すみません、ご質問の内容がよく理解できず...できればinputファイルとoutputファイルのイメージがあると分かりやすいかと思います。

    • @kawayamato2096
      @kawayamato2096 Před rokem

      こちらこそ分かりにくい質問をしてしまい大変申し訳ございません。
      inputファイルとoutputファイルとは
      データフレームとして読み込むエクセルファイルがinputファイル
      判定した結果がoutputファイルということでしょうか?
      それでしたらエクセルファイルはTwitterのDMで送ればよろしいでしょうか💦

  • @3rdvoyager248
    @3rdvoyager248 Před rokem

    VS codeで、displayが認識されないのですね…
    データフレームを扱うにはjupyter notebookの方が向いているのですか?

    • @pythonvtuber9917
      @pythonvtuber9917  Před rokem

      VSCodeですが、jupyter notebookを使うための拡張機能がありますね!
      marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter

  • @user-zt4wy7zw3l
    @user-zt4wy7zw3l Před 2 lety

    いつもわかりやすいご説明ありがとうございます。
    概要欄に記載いただいているURLを開けないのですが、
    変更されましたでしょうか?
    対処法があれば、教えていただきたいです。
    初歩的な質問で、お手数おかけして申し訳ありません。。

    • @pythonvtuber9917
      @pythonvtuber9917  Před 2 lety

      使用したファイルですね、すみません。。。
      こちらは以前に問題がありまして閉じさせていただきました😵
      概要欄のリンクも削除しておきます。

    • @user-zt4wy7zw3l
      @user-zt4wy7zw3l Před 2 lety

      お返事いただき、ありがとうございます。
      承知しました!自分でexcelファイルなどを用意して、実装してみます!
      今後も楽しくわかりやすい動画楽しみにしております!

  • @ledblack2474
    @ledblack2474 Před 3 lety

    lambda式、覚えました。
    解説とjupyternote の実演で分かりやすいね。
    ところで、jupyter note の背景(theme)を暖色or暗めにしてもらえると、ドライアイの私には目に優しいのですが。
    解説が寒色系なので、jupyter noteは暖色系とか。

    • @pythonvtuber9917
      @pythonvtuber9917  Před 3 lety

      ご視聴いただき、ありがとうございます!!
      jupyter notebookのデフォルトテーマ、確かにちょっと白くて見にくかったですね😵
      次にjupyter notebookを使うときは、ダークテーマに変更しますね!

  • @hidetoshitakizawa7528
    @hidetoshitakizawa7528 Před 2 lety

    mergeで結合した時にhow=leftで行っても右側のデータがすべてNumになってしまうのですが、原因がわかりません。なにか原因らしく部分があったら教えてください。strなどの文字や数字の部分が関わっていますか?

    • @pythonvtuber9917
      @pythonvtuber9917  Před 2 lety

      ご質問ありがとうございます😊
      keyに指定したカラムで、左側のDataFrameと右側のDataFrameを結合できない場合はNanになります!keyの型も一致している必要があるので、左側のDataFrameの型も含めて完全に同じものが右側のDataFrameに存在するのか確認してみてください😉

  • @user-ly2su3xb3t
    @user-ly2su3xb3t Před 2 lety

    こんばんは
    indexの変更の所で0~8を001~009に振り直す所ででてきた、str(x).zfillの所が理解できないのですが、zfii関数はstring型のものを変形できる関数なのでしょうか。すみません勉強不足です。。

    • @pythonvtuber9917
      @pythonvtuber9917  Před 2 lety +2

      ご質問ありがとうございます!!
      すみません... zfillの説明が不足していましたね😵
      zfillは文字列をゼロ埋めをする関数で、「便利な文字列メソッド」という動画で解説しています!この動画の7:18あたりから解説しているので、ぜひ、合わせて見てみてください😉
      便利な文字列メソッド動画 ▶︎ czcams.com/video/TjXuKz24gio/video.html
      例 ) x.zfill(5) → 文字列 x を5桁になるように0埋め

    • @user-ly2su3xb3t
      @user-ly2su3xb3t Před 2 lety

      便利な文字列メソッドという動画があるのですね!!それは必見そう。
      後で見てみます!ありがとうございました✨

  • @TaroHiro
    @TaroHiro Před 2 lety

    冒頭のgroupbyにつきまして
    佐藤と斎藤の売上合計(sum)を集計するにはどうしたらよろしいでしょうか?
    カラムを指定するのではなく、個別の佐藤、斎藤を指定したいです。

    • @pythonvtuber9917
      @pythonvtuber9917  Před 2 lety

      ご質問ありがとうございます😊
      質問がちょっと理解しきれていないのですが、
      佐藤さんの売り上げ合計 ▶︎ df[df['担当者'] == '佐藤']['売り上げ'].sum()
      佐藤さんと斎藤さんの2人の売り上げ合計の場合は
      ▶︎ df[df['担当者'].isin(['佐藤', '斎藤'])]['売り上げ'].sum()
      です!
      答えになっていますかね...🤔

    • @TaroHiro
      @TaroHiro Před 2 lety

      完璧なご回答でした。サプーさん何でもできちゃうんですね。
      いつも早速のご返信感謝しております。

  • @user-yy9bl9ib9p
    @user-yy9bl9ib9p Před 8 měsíci

    こんにちは!
    めちゃくちゃ勉強になっています!ありがとうございます!
    df.groupby('曜日').mean()
    これだとどうしても動かなくて、下記だと動きました
    df.groupby('曜日')['売上'].mean()