【本書の背景】
今日、Pythonを取り巻くデータサイエンスの実務の中で、pandasは欠かすことのできないライブラリーです。pandasには豊富な機能が用意されていますが、実務で使いこなすためには自分の頭で考え、手を動かして試行錯誤することが重要です。また、他の人が書いたコードを読むことで「そんな効率の良い書き方、知らなかった!」といった新たな気づきが得られることもあります(「はじめに」より抜粋)。
【本書の内容】
pandasを使ったプログラミングの腕試しができるように、9つのトピックについて全部で51個の問題を用意しました。各問題にはメインとなる模範解答以外にも「別解」を用意し、なるべくいろいろな考え方に触れられるよう構成しています(「はじめに」より抜粋)。
【PyQ(パイキュー)とは】
株式会社ビープラウドが運営するブラウザだけで学べるオンライン学習サービス。
【本書の問題の一例】
・最小と最大を抽出するには
・条件で行を絞り込むには
・文字列を日付時刻に変換するには
【学習環境】
実行環境:PyQ、JupyterLab
利用言語:Python 3.11
利用ライブラリ:pandas:1.5.2、JupyterLab:3.5.1、Matplotlib:3.6.2
【対象読者】
・Pythonとpandasの基本的な操作を学んだ入門者
・pandasでもっと効率的な書き方を知りたい・知識を広げたい方
【前提知識】
・Pythonの基本的な文法
・pandasおよびNumPyの基本的な使い方
【目次】
第0章 本書の使い方
第1章 pandasの基礎知識
第2章 データを入出力しよう
第3章 データの概要を確認しよう
第4章 データを部分的に参照しよう
第5章 データを変形しよう
第6章 データを加工・演算しよう
第7章 データをグループ化しよう
第8章 文字列を操作しよう
第9章 日付時刻型のデータを操作しよう
第10章 テーブル表示を見やすくしよう
【著者プロフィール】
株式会社ビープラウド
PyQチーム
斎藤 努(さいとう・つとむ)
株式会社ビープラウドにてPyQなどを担当。
古木 友子(ふるき・ともこ)
株式会社ビープラウドにて分析業務などを担当。
pandasを使ったプログラミングの腕試しができるように、9つのトピックについて全部で51個の選りすぐりの問題を用意しています。
各問題にはメインとなる模範解答以外にも「別解」を用意しています。別のアプローチでの解法を学ぶことができます。
問題によっては補講を用意しています。関連する内容の知識をさらに深めることができます。
ProloguePyQでPythonやpandasを学ぶ
P.1 PyQとは
P.2 本書とPyQの併用・購入特典
第 0 章 本書の使い方
0.1 使い方(1)PyQ上で解く
0.2 使い方(2)ローカルPC のJupyter上で解く
第 1 章 pandasの基礎知識
1.1 データの参照と更新(loc / iloc)
1.2 行の絞り込み(ブールインデックス)
1.3 インデックスの設定(DataFrame.set_index())
1.4 インデックスのリセット(DataFrame.reset_index())
1.5 Series のインデックスのリセット(Series.reset_index())
1.6 データの結合(DataFrame.merge())
1.7 データの結合(DataFrame.join())
1.8 関数の適用(DataFrame.apply() / Series.apply())
1.9 データのグループ化(DataFrame.groupby())
第 2 章 データを入出力しよう
問題2.1 CSVファイル保存時の余計な列を除くには
解答2.1 CSVファイル保存時の余計な列を除くには
補講 インデックス付きのファイルの読み込み
問題2.2 ファイルのエンコーディングエラーを解消するには
解答2.2 ファイルのエンコーディングエラーを解消するには
問題2.3 タブ区切り形式のファイルを読み込むには
解答2.3 タブ区切り形式のファイルを読み込むには
別解2.3 タブ区切り形式のファイルを読み込むには
補講 その他のフォーマットについて
第 3 章 データの概要を確認しよう
問題3.1 列ごとの統計量を確認するには
解答3.1 列ごとの統計量を確認するには
補講 数値以外の列の統計量の確認
問題3.2 最小と最大を抽出するには
解答3.2 最小と最大を抽出するには
別解3.2 最小と最大を抽出するには
問題3.3 列ごとに昇順/降順を変えて確認するには
解答3.3 列ごとに昇順/降順を変えて確認するには
第 4 章 データを部分的に参照しよう
問題4.1 データの先頭を取得するには
解答4.1 データの先頭を取得するには
別解4.1 データの先頭を取得するには
問題4.2 データを1 列おきに取得するには
解答4.2 データを1 列おきに取得するには
補講 いろいろなスライス
問題4.3 条件で行を絞り込むには
解答4.3 条件で行を絞り込むには
問題4.4 一部の列を取得するには
解答4.4 一部の列を取得するには
問題4.51 列だけのDataFrameを作成するには
解答4.51 列だけのDataFrameを作成するには
補講 Series からDataFrame への変換
第 5 章 データを変形しよう
問題5.1 異なる列名同士で連結するには
解答5.1 異なる列名同士で連結するには
問題5.2別のDataFrame の列を結合するには
解答5.2別のDataFrame の列を結合するには
別解5.2別のDataFrame の列を結合するには
問題5.3 ロング形式からワイド形式に変換するには
解答5.3 ロング形式からワイド形式に変換するには
問題5.4 ワイド形式からロング形式に変換するには
解答5.4 ワイド形式からロング形式に変換するには
別解5.4 ワイド形式からロング形式に変換するには
問題5.5 クロス集計するには
解答5.5 クロス集計するには
別解5.5 クロス集計するには
補講 ある縦軸と横軸の組み合わせに対して、複数のデータがある場合
問題5.6 区切り文字で列を複数列に分解するには
解答5.6 区切り文字で列を複数列に分解するには
問題5.7 区切り文字で列を複数行に分解するには
解答5.7 区切り文字で列を複数行に分解するには
第 6 章 データを加工・演算しよう
問題6.1 負の値を0 に置換するには
解答6.1負の値を0 に置換するには
別解6.1負の値を0 に置換するには
問題6.2 欠損値を置換するには
解答6.2 欠損値を置換するには
補講1 DataFrame の欠損値
補講2 欠損値の削除
問題6.3欠損値を別の列の値で補完するには
解答6.3欠損値を別の列の値で補完するには
別解6.3欠損値を別の列の値で補完するには
問題6.4 重複する行を削除するには
解答6.4 重複する行を削除するには
問題6.5特定の列のTop3 の順位を追加するには
解答6.5特定の列のTop3 の順位を追加するには
問題6.6 指定した境界値で階級を分けるには
解答6.6 指定した境界値で階級を分けるには
補講 区間の記法
問題6.7 四分位数で階級を分けるには
解答6.7 四分位数で階級を分けるには
補講 階級の境界値の確認
第 7 章 データをグループ化しよう
問題7.1 点数の合計の列を追加するには
解答7.1点数の合計の列を追加するには
問題7.2 生徒ごとの教科名の一覧を追加するには
解答7.2 生徒ごとの教科名の一覧を追加するには
問題7.3 値の種類から辞書を作成するには
解答7.3 値の種類から辞書を作成するには
別解7.3 値の種類から辞書を作成するには
補講 agg() について
問題7.4 特定の列ごとに順位を追加するには
解答7.4 特定の列ごとに順位を追加するには
問題7.5 グループごとに通し番号を追加するには
解答7.5 グループごとに通し番号を追加するには
補講1 前の行と連続する値のグループで通し番号を割り当てるには
補講2 NumPy のユニバーサル関数のaccumulate()
第 8 章 文字列を操作しよう
問題8.1 列内の文字列を置換するには
解答8.1 列内の文字列を置換するには
補講 strアクセサ
問題8.2 列から特定の文字列パターンだけを抽出するには
解答8.2 列から特定の文字列パターンだけを抽出するには
補講 パターンにマッチする箇所を1 行にまとめる場合
問題8.3 特定の文字列を含んでいる行を除くには
解答8.3 特定の文字列を含んでいる行を除くには
別解8.3 特定の文字列を含んでいる行を除くには
補講 指定する文字列の注意
問題8.4 どちらかの文字列を含む行を除くには
解答8.4 どちらかの文字列を含む行を除くには
問題8.5 正規表現にマッチする行を抽出するには
解答8.5 正規表現にマッチする行を抽出するには
補講 str.match()とstr.contains() の違い
問題8.6 文字列を分割してダミー変数にするには
解答8.6 文字列を分割してダミー変数にするには
補講 strアクセサのget_dummies()とpd.get_dummies() の違い
第 9 章日付時刻型のデータを操作しよう
問題9.1 文字列を日付時刻に変換するには
解答9.1 文字列を日付時刻に変換するには
別解9.1 文字列を日付時刻に変換するには
補講 変換できないフォーマット
問題9.2 日付や曜日の情報を抽出するには
解答9.2 日付や曜日の情報を抽出するには
補講 dtアクセサ
問題9.3 タイムゾーンを変換するには
解答9.3 タイムゾーンを変換するには
補講 指定可能なタイムゾーン情報
問題9.4特定の期間の行を抽出するには
解答9.4特定の期間の行を抽出するには
別解9.4特定の期間の行を抽出するには
問題9.5 日時から年+ 週番号の列を作成するには
解答9.5 日時から年+ 週番号の列を作成するには
別解9.5 日時から年+ 週番号の列を作成するには
問題9.6 日時から週の開始日の列を作成するには
解答9.6 日時から週の開始日の列を作成するには
別解9.6 日時から週の開始日の列を作成するには
補講 Timedelta 型とpd.to_timedelta()
問題9.7 飛び飛びの日付のデータを補完するには
解答9.7 飛び飛びの日付のデータを補完するには
別解9.7 飛び飛びの日付のデータを補完するには
補講 補完する期間を指定する場合
問題9.8 週ごとにデータを集約するには
解答9.8 週ごとにデータを集約するには
補講 データがない日を補完して集約するには
第10章 テーブル表示を見やすくしよう
問題10.1 値によってスタイルを変えるには
解答10.1 値によってスタイルを変えるには
別解10.1 値によってスタイルを変えるには
補講 太字以外のスタイル
問題10.2 平均値未満の値のスタイルを変えるには
解答10.2 平均値未満の値のスタイルを変えるには
別解10.2 平均値未満の値のスタイルを変えるには
補講 style のapplymap()とapply() の違い
問題10.3 値が大きいほど背景色を濃くするには
解答10.3 値が大きいほど背景色を濃くするには
補講 グラデーションのカスタマイズ
問題10.4Jupyter のセルの途中でDataFrameを表示するには
解答10.4Jupyter のセルの途中でDataFrameを表示するには
問題10.5pandas の行を省略させずに表示するには
解答10.5pandas の行を省略させずに表示するには
別解10.5pandas の行を省略させずに表示するには
補講 その他のpandas の設定
問題10.6数値の書式を指定するには
解答10.6数値の書式を指定するには
別解10.6数値の書式を指定するには
補講 style.format() のその他の設定
問題10.7 複数のスタイルを適用するには
解答10.7 複数のスタイルを適用するには
補講 スタイルを適用したExcel の出力