Pandas入門|03.Pandasとは?|できることや使い方をわかりやすく解説します|できることはCSV操作から人工知能開発まで。

Pandas超入門コースのコース紹介のところで、Pandasでは、PythonでExcelやcsv操作、グラフ化、データ集計や加工など人工知能開発の技術などができるとお伝えしました。
ただ、これだけでは、どんなことができるのかイメージができていない方がいらっしゃるかと思います。
そのため、この動画では、Pandasとはなんなのか?Pandasではどんなことができるのか?Pandasはどうやって使うのか?ということをザッと説明していきます。
この動画で紹介したワザは、のちのレッスンで詳しく説明をします。
したがって、今はこれから学ぶことを把握したり、Pandasはこうやって使うんだーと思いながら動画をご視聴ください。
とにかく、Pandasは、非常に便利です。
Pythonと組み合わせればデータ処理でできないことはないといっても過言ではないです。
また、プログラミング言語なので自動化することもできます。Pandasを覚えれば面倒な作業を卒業できるかもしれません。
ご自身での仕事や日常生活への活用シーンをイメージしながらご視聴していただけるとモチベーションがよりあがるかもしれません。
このチャンネルでは、PythonやPandasのレッスン動画、他にも、Pythonを使っての業務効率化や完全自動化などの動画をどんどん配信していきます。
新しい動画が更新されたときに新着通知がいくように、また、復習をする時に動画がどこにいったかわからなくならないようにチャンネル登録をお願いします。

この記事の信頼性

この記事は、Youtubeにて日本最大級のプログラミング教育のチャンネルを運営しているキノコードが執筆、監修しています。
私自身は、2012年からプログラミング学習を始め、2019年以降はプログラミング教育に携わってきた専門家です。
他にも、私には下記のような実績や専門性があります。

  • キノコードは毎月10名以上、合計100名以上ののプログラミング学習者と1対1でお悩みを聞き、アドバイスをしています
  • キノコード自身は、プログラミングスクールに通ったり、本や有料の動画で勉強してきた経験もあります
  • キノコードは、Python学習サービス「キノクエスト」を運営しています
  • 本の出版、プログラミング雑誌への寄稿の実績があります

Python学習サービス「キノクエスト」のご紹介

キノコードでは、Pythonを習得するためのPython学習サービス「キノクエスト」を運営しています。
キノクエストには、学習カリキュラムがあり、学習順番に悩むことなく学習を進められます。
月額1,990円と本1冊分の値段です。

キノクエストの特徴は下記の通りです。

  • Python学習をしている仲間が集まるコミュニティがある
  • 1000問以上の問題を解いてプログラミングを習得
  • 環境構築不要ですぐに始められる
  • 動画と連動しているので、インプットもできる。
  • 月額1,990円で、コミュニティもセット

キノクエストを詳しく知りたい方は、紹介ページをご覧ください。

▼キノクエストの紹介ページはこちら▼
https://kino-code.com/kq_service_a/

それでは解説をはじめます。

レッスンで使ったファイルはこちら

キノクエストでアカウントの新規登録に進み、メール認証を完了します。

ログインした状態(プラン選択画面が表示されます)で下記のボタンをクリックいただくか、ファイルダウンロードページのURL:https://kinoquest.jp/main/file_download/を直接アドレスバーに入力ください。

Pandasとは

Pandasとは、データ解析を支援する機能を提供するPythonのライブラリです。
例えば、Pandasには、csvファイルを読み取るための機能、Excelのデータを読み取る機能、列や行を削除したり、計算したり、フィルターをかけて抽出をしたり、グループごとにとまめたり、表同士をデータをつっつけたり、穴が空いているデータを色々な方法で埋めたり、時系列のデータを扱ったり、グラフ化をしたり。
本当に色々なことができます。
Excelでできることはほぼできますし、データベース言語のSQLでできることもほぼできます。個人的な感覚だと、それら以上にできることがあります。
また、人工知能開発では、事前のデータ処理、つまりデータの前処理が人工知能開発の8割以上になると言われています。
その前処理は、Pandasが使われることが多いです。
したがって、Pandasができるようになると、エクセル操作などの日々の業務の効率化、人工知能開発まで色々なことができるようになります。

DataFrameとSeries

このPandasで扱うデータ構造には、データフレームとシリーズの2つがあります。
データフレームとは、エクセルの表形式のように、行と列で成り立っているイメージです。
シリーズとは、データフレームから1列取り出した時にできる型でもあり、Pythonでいうリストのようなものにインデックスというものがくっついているイメージです。
Pandasといえばデータフレームがメインですので、データフレームを用いてさっそくレッスンを進めていきたいと思います。
データフレームの作成については次回レッスンで説明しますので、ここではcsvファイルを読み込む方法でデータフレームを作成します。
それではPandasをインポートするところから始めていきましょう。

Pandasをインポート

import pandas as pd

まず、Pandasをインポートする記述を書きます。
「import pandas as pd」を書きます。
「as」は、ライブラリ名(pandas)を好きな名前で使うことができます。
したがって、この記述により「pandas」を「pd」という名前で使うことができます。
エラーにならず、インポートが完了しました。

ファイルの説明

df_population_data = pd.read_csv(‘data.csv’,encoding=’shift-jis’)

次に、pandasの関数を使ってcsvファイルを読み取ってみましょう。
このコースでは、政府が発表している「1920年から2015年までの全国の人口推移のデータ」を使います。
csvファイルは、このデータが記述されています。
csvファイルの中身をみてみましょう。
一番左の列は都道府県ごとのコードになっています。
北海道なら1という番号、東京なら13という番号がふられています。
次の列は、番号に対応した都道府県が入っています。
次に、元号と和暦です。
その次は、西暦となっていて、その次が人口の総数になっています。
その隣が男女別の人口が記載されています。
このファイルを使って、このレッスンを進めていきます。

csvファイルを読み取る

Pandasでは、このようなcsvファイルを読み込むことができます。
read_csv関数を使います。
read_csv関数を使うと、csvをデータフレームとして読み込むことができます。
変数名は、データフレームを省略した「df」と人口のデータという意味で、「df_population_data」としましょう。
次に、イコールを書いて、「pd」を書きます。
次に、ドットを書いて、「read_csv」を書きます。
次に、丸括弧を書いて、シングルクォーテーションを書きます。
シングルクォーテーション中に、csvファイルのパスとファイル名を(data.csv)を書きます。
encodingの引数で、文字コードを指定できます。今回は、shift-jisを指定します。他にもutf-8なども指定できます。
実行すると、変数(df_population_data)に、データフレームを代入します。
変数にデータが代入されたはずです。

df_population_data

表示させてみましょう。
CSVファイルが読み込まれていることがわかります。

df_population_data

read_csv関数を使うと、csvをデータフレームとして読み込むことができるといいました。
データ型を確認してみましょう。
typeと書いて丸括弧。丸括弧の中に、データ型を確認したい変数を記述しましょう。
データフレームとなっています。
このread_csv関数では、インデックスにする列を指定したり、読み取る列を指定したり、列名をスキップして読み取ったり、文字コードを指定したりと色々なことができます。
使い方はのちのレッスンで説明します。

表示する列数・行数を変更する

pd.set_option(‘display.max_columns’, 10) # 最大表示列数
pd.set_option(‘display.max_rows’, 10) # 最大表示行数

読み取ったcsvファイルは、939行あって、列は8列あります。
この左下に、939rowsと8columnsとあります。
データフレームでは、行のことをrow、列のことをcolumnといいます。
さて、もともとのデータは939行あるはずです。
行が省略されています。
表示を増やす記述をしてみましょう。
「pd.set_option」を書きます。
次に、丸括弧を書いて、シングルクォーテーションを書きます。
シングルクォーテーションの中に、「display」を書いて、ドット、「max_rows」と書きます。
最後に、表示させる行数を書きます。今回は1000行としましょう。したがって、「1000」を書きます。
実行してみます。
すべての行が表示されました。

pd.reset_option(‘display.max_rows’)

この設定を元に戻すには、reset_optionを使います。
pd.reset_option。丸括弧の中に’display.max_rows’と記述します。
設定が変わったはずです。
実行してみましょう。
元の通りになっています。

pd.set_option(‘display.max_columns’, 5)

次は反対に、表示させる列数を制限するコードを書きます。
表示させるカラムを5つに変えてみましょう。
pd.set_optionと書いて、display.max_columnsです。5列に制限したいので5と書きます。
実行してみましょう。
5列になっています。
これも設定を元に戻しておきましょう。

最初の10行とってくる

df_population_data.head()

データフレームの最初の5行だけをみたい場合はheadメソッドを使います。
変数(df_population_data)のあとに、ドットを書いて、headメソッドを書きます。
実行してみましょう。
最初の5件を表示しました。

df_population_data.head(10)

headメソッドはデフォルトが5になっています。
10行表示させたい場合は、丸括弧の中に10と記述します。
実行してみます。10行だけ表示できました。

df_population_data.tail(10)

最後の10行だけ表示させたい場合は、tailメソッドです。
最後の10行だけ表示できました。

ランダムに10行とってくる

df_population_data.sample(10)

上の10行、下の10行といった感じではなく、ランダムを10行とってきたい場合は、sampleメソッドです。
ランダムにとってこれています。

統計量を取得する

df_population_data.describe()

今度は統計量をみてみましょう。
変数(df_population_data)のあとに、ドットを書いて、describeメソッドを書きます。
このメソッド(describe)は、平均値、標準偏差、最大値、最小値、四分位数(しぶんいすう)などの要約統計量を取得することができます。
実行してみます。平均値や標準偏差などが取得できています。
ただし、みにくいので、小数点以下を四捨五入をしてみましょう。

df_population_data.describe().round(0)

ドットを書いて、roundメソッドを書きます。
このメソッド(round)は、桁数を指定して数値を丸めることができます。
丸めるとは、四捨五入したり、切り捨てしたり、切り上げしたりすることをいいます。
roundメソッドの引数に「0」を書いて、小数点以下0桁に丸めるようにします。
それでは、実行してみましょう。
これでみやすくなりましたね。
このように、たったこれだけの操作で、これから分析しようとしているデータの概要がわかります。
大正9年、つまり1920年から、平成27年、つまり、2015年までの間、各都道府県で一番大きい人口のところは、1350万。
一番小さいところは、45万人です。
全国の都道府県の平均は、210万人のようです。

グループごとに集計をする

df_population_data.groupby(by=’都道府県名’).mean()[[‘人口(総数)’, ‘人口(男)’, ‘人口(女)’]].round(0)

集約も簡単です。エクセルのピボットテーブルのようなこと、SQLのGroupByのようなことができます。
groupbyメソッドを使います。
使い方はのちのレッスンで説明しますね。
都道府県別での平均をみてみます。これもroundメソッドを使ってみやすくしましょう。
実行してみます。平均が取得できました。

並び替えをする

df_population_mean=df_population_data.groupby(by=’都道府県名’).mean()[[‘人口(総数)’, ‘人口(男)’, ‘人口(女)’]].round(0)

これを人口の多い順に並び替えてみましょう。
変数に入れて、sort_valuesメソッドを使います。
実行します。
東京、大阪、神奈川、愛知、北海道の順になっています。
1920年からの平均なので、現状とは違いますが、それっぽくなっています。

結合をする

left = pd.DataFrame({‘name’:[‘aaa’,’bbb’,’ccc’,’ddd’],’age’:[24,33,27,42]})
right = pd.DataFrame({‘name’:[‘eee’,’bbb’,’aaa’,’fff’,’ddd’],’group’:[‘x’,’y’,’y’,’x’,’x’]})

Pandasでは、データ分析に欠かせない、結合も簡単にできます。
エクセルですとvlookupのようなこと、SQLですとjoinのようなことが可能です。
人口データではないちょっと簡単な例でみてみましょう。
データフレームをふたつ作ります。
それぞれ次のようなデータフレームです。

left
right

結合に使用できるメソッドはいくつかありますが、ここではmergeメソッドを使用して結合します。

pd.merge(left,right)

自動で、両方に存在する「name」という共通のキーを元に、両方にあるものだけが残りました。
どちらかにあれば残すのであれば、これも指定することで制限できます。

pd.merge(left,right,how=’outer’)

このような同じ名前の共通のキーがない場合でも、キーを指定することで結合できます。
そしてキーが複数ある場合でももちろん可能で、これは本当に便利です。
これものちのレッスンで説明します。

pd.concat([left,right])

縦に結合することもできます。
concat関数を使います。
縦にくっついています。

pd.concat([left,right],axis=1)

キーは関係なく、単純に横にくっつけることもできます。

グラフ化

import matplotlib
matplotlib.rcParams[‘font.family’] = ‘Arial Unicode MS’
df_population_data[df_population_data[‘都道府県名’]==’東京都’][[‘人口(男)’, ‘人口(女)’]].plot(color=[‘skyblue’,’pink’])

そして、簡単に可視化もできるので見てみましょう。
まずはJupyter Lab上でグラフなどを表示するコード、日本語表記をするためのコードを書きます。
東京都だけを抽出して、人口総数をグラフにしてみましょう。
折れ線グラフが表示されました。

import matplotlib
matplotlib.rcParams[‘font.family’] = ‘Arial Unicode MS’
df[df[‘都道府県名’]==’全国’][[‘人口(男)’, ‘人口(女)’]].plot(kind=’bar’,color=[‘skyblue’,’pink’])

簡単に棒グラフにすることもできます。
グラフには、見やすいように横軸や縦軸に詳細な設定を追加したり、グラフの種類や色を変更することができます。
データの可視化はmatplotlibやseabornというライブラリを使えば、細かい調整をしたり、美しいグラフを作ることができます。
matplotlibとseabornのコースについても超入門コースとして作っていきます。
チャンネル登録をしてお待ちいただけますと大変嬉しいです。

時系列データ

import matplotlib
matplotlib.rcParams[‘font.family’] = ‘Arial Unicode MS’
df[df[‘都道府県名’]==’全国’][[‘人口(男)’, ‘人口(女)’]].plot(kind=’bar’,color=[‘skyblue’,’pink’])

簡単に棒グラフにすることもできます。
グラフには、見やすいように横軸や縦軸に詳細な設定を追加したり、グラフの種類や色を変更することができます。
データの可視化はmatplotlibやseabornというライブラリを使えば、細かい調整をしたり、美しいグラフを作ることができます。
matplotlibとseabornのコースについても超入門コースとして作っていきます。
チャンネル登録をしてお待ちいただけますと大変嬉しいです。
最後に、Pandasは時系列データを操ることもできます。
データフレームのインデックスを日付型にすることで時系列データとして扱うことができます。
こうすることで、指定した日数での集計、月末だけの集計、週次や月次の集計などが可能になります。
例えば、株価などの経済データを好きな期間で分析することもできますし、移動平均や指標となる数値を追加すればさらに深い分析が可能になります。以上がPandasのできること、使い方になります。
ここまで、流すように話を進めてきました。
Pandasとは何か?Pandasができることは何か?そういったことを把握できましたでしょうか?
加えて、Pandasが便利さも感じていただけましたでしょうか?
このチャンネルでは、PythonやPandasのレッスン動画、他にも、Pythonを使っての業務効率化や完全自動化などの動画をどんどん配信していきます。
さらには、matplotlibなどの可視化のコースも作っていく予定です。
チャンネル登録していただくと、動画が更新された新着通知がいくので、ぜひチャンネル登録をお願いします。
それでは次のレッスンでお会いしましょう。それではまた。