SlideShare a Scribd company logo
2020-02-19
森下功啓
1
pandasの紹介と⽤語の整理
pandasとは
• pandasは、Pythonの表形式データの読み書き⽤ライブラリ
• Excel, csv, tsv, HTML tableなどの⼊出⼒に対応
• 統計処理,条件抽出,結合が簡単
• 例えば、「⾵速30 m/sを超えた⽇数を調べたい」などに最適
• jupyterと相性が良い
3
HTML table HTML table
IN OUT
pandasで何か処理
グラフを作るのも簡単
• 単独でもグラフは描ける
• seabornと組み合わせるとなお良い
• なぜか描画が遅い
import pandas as pd
import seaborn as sns
df = pd.read_csv('iris.csv')
sns.pairplot(df, hue='species') # hueで層別プロット
最近に森下が使った例
• バスの乗降データを分析
• VBAで数時間でも処理が全く終わらないものを300秒で処理
• 成績通知書へのコメントの⾃動⽣成
• 気象データの処理
• 機械学習予測結果の整理
5
DataFrame型
• pandasでは、表形式データをDataFrame型オブジェクトで扱う
• DataFrameはExcelでいうと、1枚のシートに相当
• ↓の例では、空のDataFrameを作成している
6
import pandas as pd
df = pd.DataFrame()
dfはDataFrameの略で、よく使われる名前
Series型
• DataFrameには新しいレコードや列を追加できる
• また、レコードや列を分離・コピーもできる
• 特定のレコードや列をコピーすると、Series型というオブジェ
クトになる
7
Series型のオブジェクトにデータが格
納された状態となる
基本⽤語
8
空ではないDataFrameを表⽰させた例
index
カラム名
(列名)
⾏
レコードともいう
列
DataFrameをjupyterで表⽰させると・・・
• jupyter(Colaboratory)は、セルの最後に書いた変数の中⾝を表⽰する
• この機能で表⽰すると、DataFrameの中⾝が罫線付きで表⽰される
• ⾮常に便利なので、この機能を使ってDataFrameの状態を確認しよう
9
表⽰させている例
pandasの使い⽅
Excelファイルの読み込み
• read_excel()を使う
• 引数はファイル名とシート名かシートの番号
11
import pandas as pd
df = pd.read_excel("sample_excel.xlsx", sheet_name=0)
引数のsheet_nameはデフォル
トで0。シート名でもOK
第1引数が読み込ませ
たいファイル名
pandasが使える様に、ライブ
ラリをインポート ただし、pandasは名前が⻑いの
で、pdと略せる様にas pd
CSVファイルの読み込み
• CSVはカンマ区切りのテキスト
• 読み込むコード例→
• csvファイルはExcelで編集できるが、
Excelのファイルではない
12
import pandas as pd
# CSVファイルの読み込み
df = pd.read_csv("sample_csv.csv")
SublimeTextで表⽰したcsvファイルの例
カンマで値が分離されている。
Excelファイルと異なり、テキストファイルだ。
TSVファイルの読み込み
• TSVはタブ区切りのテキスト
• 読み込むコード例→
• 引数にdelimiterを指定
• delimiterは「区切り⽂字」と
いう意味
• tはWindowsではタブ⽂字
• はMacやLinuxでは\の半⾓
13
import pandas as pd
# TSVファイルの読み込み
# ↓PDFでコピーすると、
# が変なUnicodeに変換されてエラー
df = pd.read_csv("sample_tsv.tsv", delimiter= "t")
SublimeTextで表⽰したcsvファイルの例
タブ⽂字で値が分離されている。
Excelファイルと異なり、テキストファイルだ。
Web上の表を読み込む
• 気象庁のアメダスのリアルタイム観測結果を読み込んでみよう
• http://www.jma.go.jp/jp/amedas_h/today-86141.html?areaCode=000&groupCode=62
14
この表が欲しい
htmlのtableタグ構造の解析は⾯倒なので、pandasを使う
15
import pandas as pd
# HTMLのtableを読み込む(DataFrameのlistで返ってくる)
url = "http://www.jma.go.jp/jp/amedas_h/today-86141.html?areaCode=000&groupCode=62"
df_list = pd.read_html(url)
df = df_list[4] # アメダス(熊本)の今⽇の観測データが格納されているハズ
DataFrameに取り込んだ表を表⽰させた様⼦
アメダスのWebサイトのHTMLコードには、
tableが複数含まれており、欲しい表が格納さ
れたDataFrameには要素番号4でアクセス
@2019年10⽉
• read_html()を使う
読み込み時によく使う引数
• skiprows:読み⾶ばす⾏を指定
• 例:skiprows=[0,1,3] # 1⾏⽬、2⾏⽬、4⾏⽬を読み⾶ばす
• na_values:⽋測扱いとする⽂字列を複数指定
• 例: na_values="⽋測", na_values=["⽋測", "NaN"]
• encoding:⽂字コードを指定
• 例:encoding="shift_jis" # UTF-8なら指定の必要はない
• header:カラム名の指定。表にカラム名が無い場合は、header=Falseとする
• header=3として、4⾏⽬をカラム名に指定することもできる
16
元ファイル
余計な⾏や、⽋測値を含む 必要な部分だけ読み込み、⽋測値をNaN(⾮値)にできた
pandasの基本技 ―型の確認―
• 各カラムの型がintなのかobject(⽂字列)なのか、確認する
• dtypesプロパティを使う
• int64は符号付整数64 bit型を表す
• objectは⼤抵は⽂字列
• データの中に⽂字列が⼊るとobject
17
型を確認している様⼦
*objectになった列をどうにかするのは次回以降
pandasの基本技 ―基本統計量―
• 平均などを求めるために、 describe()を使う
個数
平均
標準偏差
最⼩
25%値
中央値
75%値
最⼤
数値以外の基本統計量
• 除くという意味の引数excludeを使う
個数
⼀意な値の要素の個数
最頻値
最頻値の個数
pandasの基本技 ―カラム名の変更 1―
• カラム名を変更せざる得ないことがある
• ライブラリが⽇本語に対応していない場合などだ
• 書き換え⽅法は2通りあるが、簡単な⽅を紹介する
書き変わっている
基本的なグラフ
• plot()やscatter()を使う
scatter()は散布図
plot()は折れ線グラフ
x軸も指定できる
pandasの基本技 ―スライス―
• list型が持っているスライス機能をDataFrameも持っている
22
スライスした例
1⾏⽬〜2⾏⽬が削除されている。
説明はスキップして良い
たまにdf = df[2:]としてしまってdfを上書
きしてしまう⼈が居ますが、以降の処理で
インデックスと⾏番号がズレてエラーにな
ります。その場合は、データの読み込みか
らやり直してください。
pandasの基本技 ― ndarray型に変換―
• DataFrameはvaluseプロパティでndarray型に変換できる
• 数値データの読み込みで便利
23
この⽅法でのデータ配布・読み込
みは試験でしばしば使います
pandasの基本技 ―セル、⾏の指定―
• ⼀⾏丸ごと変更したい、特定のセルだけ修正したいなどの場合
• iloc
• ⾏・列番号(数値)で指定
• 列や⾏単位で取得できるし、複数の列・⾏も指定できる
• loc
• ⾏・列のindex(名前)で指定
• 列や⾏単位で取得できるし、複数の列・⾏も指定できる
• iat
• ⾏・列番号(数値)で指定
• 1つのセルを指定できる(この⽤途ではilocより⾼速)
• at
• ⾏・列のindex (名前)で指定
• 1つのセルを指定できる(この⽤途ではlocより⾼速)
• DataFame変数名["列名"]でも1列を指定できる
使い⽅
• 特定の⾏を番号で指定する場合
• 特定の列をindexで指定する場合
[⾓カッコ]を使って指定す
るのが独特な気がする。:は、範囲を表すのに使うが、数値を前
後に書かないと全部という意味になる。
フィールドは⾏・列の順。
利⽤例 値に「 )」が付いていたら削除
• AMeDASでは、観測値に⾃信がないときなどに「 )」を付ける
• 他にもパターンがある
• 後で困るので、余計な値を取り除く必要がある
• ここでは、降⽔量(mm)列から「 )」を除外してみる
pandasの基本技 ―型変換―
• 特定の列の型をint型からfloat型に変換したいことがある
• 逆パターンもある
• 前スライドで降⽔量の列から余計な⽂字列を削除しているので、
列の型を丸ごと変えたい
• astype()を使う
型がfloat型に変わった
⽇付の⽂字列をdatetime64型に変換する例
• 時系列データを使って横軸を時刻に指定する場合に有⽤
• pandasのto_datetime()を使う
• 複雑な書式の場合は書式を指定する
pandasの基本技 ―⾮値の処理 1―
• ⾮値は統計上扱いが難しい
• ⾮値を含むレコードの削除は簡単。 dropna()メソッドを使う
• ただし、標本数が少なかったり、⽋測が多いと削除しづらい
• 時には、⾮値は列の平均やパターンから予測した値に変換する
29
NaNを含む全レコードを削除する例
pandasの基本技 ―⾮値の処理 2―
• 特定の列に⾮値NaNを含むレコードを削除したいことがある
• dropna()メソッドを使う
• ただし、引数subsetに、対象の列名のリストを指定する
30
説明はスキップして良い
⾮値を含む⾏(レコード)を表⽰
• ⾮値を含む⾏のみを表⽰したいこともある
• isnull()を使うと、⾮値の⾏がTrueになったリストが得られる
• DataFrameに対して、[]で列名ではなく[True, False, ・・・]
の様なリストを渡すとTrueの⾏だけ取り出せる
• 合わせれば、特定の列が⾮値の⾏のみ抽出できる
説明はスキップして良い
⾮値を特定の値に置換する例
• ⾮値NaNを特定の値に置換するにはfillna()を使う
• 引数に辞書を渡すと、列ごとに異なる値に置換できる
NaNが0に変わった
辞書
pandasの基本技 ―条件で抽出―
• 条件に合致するレコードのみを抽出
33
上記のような記述で、条件に合致する⾏が
Trueとなったbool値がリスト状になったデータが返る
条件に合致するレコードのみを取り出せる
DataFrameにbool値のリストを渡すと、True
に該当するレコードのみを抽出できる
複数条件の指定
• 複数の条件は、()で囲って、&や|でつなぐ
• &はand, |はor
• ↓「⾵速3m以上かつ⾵向が北」の抽出例
34
(カッコ)で囲う
&や|でつなぐ
pandasの基本技 ―ヒストグラム―
• DataFrameのhist()関数でヒストグラムは描画されるが、、、
• やや⾒ずらいのと、⽇本語に対応していない
• カラム名を書き換えた上で、パラメータをセット
• hist()の引数binsに分割数を渡す
• 引数figsizeはグラフのサイズで、タプルで縦横を指定
せっかくなので、時系列グラフを描く
• 時刻を⽂字列から時刻オブジェクトに変換したので、横軸を時
間としたグラフが描けるようになった
• 気温の変化をプロットした例を⽰す
実⾏結果
たまにひげが下に伸びて
いて、データがおかしい
のが分かる
説明はスキップして良い
pandasの基本技 ―相関⾏列―
• corr()で相関⾏列を計算できる
• パッと⾒で、なんとなく関係のありそうなカラムが分かる
この気象データは
ほぼ無相関
pandasの基本技 ―保存―
• DataFrameはCSVやExcel形式でファイルに保存できる
• 「ModuleNotFoundError: No module named 'openpyxl'」と表⽰さ
れたら、モジュール不⾜
• pip install openpyxlでモジュールをインストール(管理者権限が必要かも)
38
# CSV形式で保存する(index=Falseで、インデックス(通し番号・⾏名)は省略して保存)
df2.to_csv("save_sample.csv", index=False) # デリミタ(区切り⽂字)も指定可能
df2.to_csv("save_sample_utf8.csv", index=False, encoding="utf-8-sig") # ⽂字コードを指定
# Excel形式で保存する(index=Falseで、インデックス(通し番号・⾏名)は省略して保存)
df2.to_excel("save_sample.xlsx", index=False)
*encoding=“utf-8-sig”はBOM付きのUTF-8で保存することを指⽰している。2016年度の
Windows環境ではBOM付きの⽅がExcelで閲覧しやすい。
実⾏すると、、
ファイルが増える
csvで保存したファイルをテキストエディタ
で表⽰させた様⼦
• 半⾓カンマでフィールドが区切られている
• encodingを指定しない場合、⽂字コードはWindowsではshift-jisかも
40
⽂字コードがUTF-8で保存されたsave_sample.csvをSublime Textで表⽰させた様⼦
付録
41
注意
• 2018年より以前の古いpandasでは⽇本語ファイル名のExcelファイルを
読み込むとエラーが出るかもしれません
• ⽇本語を含むcsvファイルは、⽂字コードを指定してください
• ⽇本語を含むcsvファイルを保存する際は、⽂字コードをUTF-8に
42
参考⽂献
• jupyter notebookの使い⽅
• https://www.slideshare.net/katsuhiromorishita/google-colaboratory-177618719
• pandas公式サイト
• https://pandas.pydata.org/index.html
• Python Pandasでのデータ操作の初歩まとめ
• https://qiita.com/hik0107/items/d991cc44c2d1778bb82e
• pandasで公共⽤⽔域⽔質測定データ分析のTips
• http://estuarine.jp/2016/07/python_jpwq/
• 建築環境⼯学系⽇記 Pythonでグラフを描く
• http://www.kankyoukei.com/2017/03/python.html 43
参考⽂献
• Python, pandas, seabornでペアプロット図(散布図⾏列)を作成
• https://note.nkmk.me/python-seaborn-pandas-pairplot/
• PythonでPandasのPlot機能を使えばデータ加⼯からグラフ作成
までマジでシームレス
• https://qiita.com/hik0107/items/de5785f680096df93efa

More Related Content

PDF
4 データ間の距離と類似度
PDF
PCAの最終形態GPLVMの解説
PDF
ログ解析基盤におけるストリーム処理パイプラインについて
PPTX
社会心理学者のための時系列分析入門_小森
PPTX
【DL輪読会】時系列予測 Transfomers の精度向上手法
PDF
統計的因果推論 勉強用 isseing333
PDF
機械学習モデルの判断根拠の説明
PDF
Rの高速化
4 データ間の距離と類似度
PCAの最終形態GPLVMの解説
ログ解析基盤におけるストリーム処理パイプラインについて
社会心理学者のための時系列分析入門_小森
【DL輪読会】時系列予測 Transfomers の精度向上手法
統計的因果推論 勉強用 isseing333
機械学習モデルの判断根拠の説明
Rの高速化

What's hot (20)

PDF
Qgis raster 3.16
PDF
時系列予測にTransformerを使うのは有効か?
PDF
幾何と機械学習: A Short Intro
PDF
QGIS はじめてのラスタ解析
PDF
DQNからRainbowまで 〜深層強化学習の最新動向〜
PPTX
動画像を用いた経路予測手法の分類
PDF
【博士論文発表会】パラメータ制約付き特異モデルの統計的学習理論
PDF
LDA入門
PDF
Prophet入門【Python編】Facebookの時系列予測ツール
PDF
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
PDF
失敗から学ぶ機械学習応用
PDF
組合せ最適化入門:線形計画から整数計画まで
PDF
強化学習その4
PDF
深層生成モデルと世界モデル(2020/11/20版)
PPTX
Anaconda navigatorのアップデートが終わらないときの対処方法メモ
PPTX
主成分分析
PDF
グラフニューラルネットワークとグラフ組合せ問題
PPTX
金融時系列のための深層t過程回帰モデル
PDF
コンピュータビジョンの観点から見たAIの公平性
Qgis raster 3.16
時系列予測にTransformerを使うのは有効か?
幾何と機械学習: A Short Intro
QGIS はじめてのラスタ解析
DQNからRainbowまで 〜深層強化学習の最新動向〜
動画像を用いた経路予測手法の分類
【博士論文発表会】パラメータ制約付き特異モデルの統計的学習理論
LDA入門
Prophet入門【Python編】Facebookの時系列予測ツール
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
失敗から学ぶ機械学習応用
組合せ最適化入門:線形計画から整数計画まで
強化学習その4
深層生成モデルと世界モデル(2020/11/20版)
Anaconda navigatorのアップデートが終わらないときの対処方法メモ
主成分分析
グラフニューラルネットワークとグラフ組合せ問題
金融時系列のための深層t過程回帰モデル
コンピュータビジョンの観点から見たAIの公平性
Ad

Similar to オトナのpandas勉強会(資料) (14)

PDF
Intoroduction of Pandas with Python
PPTX
東大生向けデータ解析講座 第2回 2017/12/29
PPTX
Tokyo r28 1
PPTX
Data frameあれこれ
PPTX
SparkとJupyterNotebookを使った分析処理 [Html5 conference]
PDF
Pandas presentation
PPTX
2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction
PDF
Apache spark 2.3 and beyond
PDF
Rユーザのためのspark入門
PDF
Python for Data Anaysis第2回勉強会4,5章
PPTX
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
PDF
Ibis: すごい pandas ⼤規模データ分析もらっくらく #summerDS
PDF
Apache Spark + Arrow
PPTX
PandasとSQLとの比較
Intoroduction of Pandas with Python
東大生向けデータ解析講座 第2回 2017/12/29
Tokyo r28 1
Data frameあれこれ
SparkとJupyterNotebookを使った分析処理 [Html5 conference]
Pandas presentation
2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction
Apache spark 2.3 and beyond
Rユーザのためのspark入門
Python for Data Anaysis第2回勉強会4,5章
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
Ibis: すごい pandas ⼤規模データ分析もらっくらく #summerDS
Apache Spark + Arrow
PandasとSQLとの比較
Ad

More from Katsuhiro Morishita (20)

PDF
数ページの卒業論文作成のためのwordの使い方
PDF
Pythonのパッケージ管理ツールの話@2020
PDF
SIgfox触ってみた in IoTLT in 熊本市 vol.3
PDF
Google Colaboratoryの使い方
PDF
Excelでのグラフの作成方法re
PDF
Pythonのmain関数
PDF
Pythonスクリプトの実行方法@2018
PDF
機械学習と主成分分析
PDF
Pythonで始めた数値計算の授業@わんくま勉強会2018-04
PDF
マークシート読み込みプログラムを作ってみた@2018-04-04
PDF
オトナの画像認識 2018年3月21日実施
PDF
LoRa-WANで河川水位を計測してみた@IoTLT@熊本市 vol.001
PDF
シリーズML-08 ニューラルネットワークを用いた識別・分類ーシングルラベルー
PDF
シリーズML-07 ニューラルネットワークによる非線形回帰
PDF
シリーズML-06 ニューラルネットワークによる線形回帰
PDF
シリーズML-05 ニューラルネットワーク
PDF
シリーズML-03 ランダムフォレストによる自動識別
PDF
シリーズML-01 機械学習の概要
PDF
Pandas利用上のエラーとその対策
PDF
Pythonによる、デジタル通信のための ビタビ符号化・復号ライブラリの作成
数ページの卒業論文作成のためのwordの使い方
Pythonのパッケージ管理ツールの話@2020
SIgfox触ってみた in IoTLT in 熊本市 vol.3
Google Colaboratoryの使い方
Excelでのグラフの作成方法re
Pythonのmain関数
Pythonスクリプトの実行方法@2018
機械学習と主成分分析
Pythonで始めた数値計算の授業@わんくま勉強会2018-04
マークシート読み込みプログラムを作ってみた@2018-04-04
オトナの画像認識 2018年3月21日実施
LoRa-WANで河川水位を計測してみた@IoTLT@熊本市 vol.001
シリーズML-08 ニューラルネットワークを用いた識別・分類ーシングルラベルー
シリーズML-07 ニューラルネットワークによる非線形回帰
シリーズML-06 ニューラルネットワークによる線形回帰
シリーズML-05 ニューラルネットワーク
シリーズML-03 ランダムフォレストによる自動識別
シリーズML-01 機械学習の概要
Pandas利用上のエラーとその対策
Pythonによる、デジタル通信のための ビタビ符号化・復号ライブラリの作成

Recently uploaded (10)

PDF
細胞培養用バイオリアクターおよび発酵槽市場規模の成長見通し:2031年には2823百万米ドルに到達へ
PDF
Qlik TECH TALK セミナー:What's New In Qlik ~ 2025年7月リリース最新機能のご紹介
PDF
グローバルロープウェイ用スチールワイヤーロープ市場2025:主要企業のシェア、売上動向、競争戦略
PDF
限外ろ過膜調査レポート:市場規模、シェア、産業分析データ、最新動向2025-2031 YH Research
PDF
商用ウェブカメラ市場:世界の産業現状、競合分析、シェア、規模、動向2025-2031年の予測
PDF
【QYResearch】グローバル農業機械市場の動向分析と成長戦略に関する総合調査報告
PDF
世界半導体用酸化ハフニウム市場のサプライチェーン解析:上流、下流、収益モデル分析2025-2031
PDF
XCMSを用いた質量分析データ処理_BioCAsia2021_yamamoto.pdf
PDF
【QYResearch】グローバルコネクタ市場の動向と将来展望に関する詳細な分析報告
PDF
【QYResearch】人形ロボット産業の市場構造と今後の発展方向に関する分析レポート
細胞培養用バイオリアクターおよび発酵槽市場規模の成長見通し:2031年には2823百万米ドルに到達へ
Qlik TECH TALK セミナー:What's New In Qlik ~ 2025年7月リリース最新機能のご紹介
グローバルロープウェイ用スチールワイヤーロープ市場2025:主要企業のシェア、売上動向、競争戦略
限外ろ過膜調査レポート:市場規模、シェア、産業分析データ、最新動向2025-2031 YH Research
商用ウェブカメラ市場:世界の産業現状、競合分析、シェア、規模、動向2025-2031年の予測
【QYResearch】グローバル農業機械市場の動向分析と成長戦略に関する総合調査報告
世界半導体用酸化ハフニウム市場のサプライチェーン解析:上流、下流、収益モデル分析2025-2031
XCMSを用いた質量分析データ処理_BioCAsia2021_yamamoto.pdf
【QYResearch】グローバルコネクタ市場の動向と将来展望に関する詳細な分析報告
【QYResearch】人形ロボット産業の市場構造と今後の発展方向に関する分析レポート

オトナのpandas勉強会(資料)