More Related Content
More from Katsuhiro Morishita
More from Katsuhiro Morishita (20)
オトナのpandas勉強会(資料)
- 12. CSVファイルの読み込み
• CSVはカンマ区切りのテキスト
• 読み込むコード例→
• csvファイルはExcelで編集できるが、
Excelのファイルではない
12
import pandas as pd
# CSVファイルの読み込み
df = pd.read_csv("sample_csv.csv")
SublimeTextで表⽰したcsvファイルの例
カンマで値が分離されている。
Excelファイルと異なり、テキストファイルだ。
- 13. 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ファイルと異なり、テキストファイルだ。
- 15. 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()を使う
- 16. 読み込み時によく使う引数
• 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(⾮値)にできた
- 24. pandasの基本技 ―セル、⾏の指定―
• ⼀⾏丸ごと変更したい、特定のセルだけ修正したいなどの場合
• iloc
• ⾏・列番号(数値)で指定
• 列や⾏単位で取得できるし、複数の列・⾏も指定できる
• loc
• ⾏・列のindex(名前)で指定
• 列や⾏単位で取得できるし、複数の列・⾏も指定できる
• iat
• ⾏・列番号(数値)で指定
• 1つのセルを指定できる(この⽤途ではilocより⾼速)
• at
• ⾏・列のindex (名前)で指定
• 1つのセルを指定できる(この⽤途ではlocより⾼速)
• DataFame変数名["列名"]でも1列を指定できる
- 26. 利⽤例 値に「 )」が付いていたら削除
• AMeDASでは、観測値に⾃信がないときなどに「 )」を付ける
• 他にもパターンがある
• 後で困るので、余計な値を取り除く必要がある
• ここでは、降⽔量(mm)列から「 )」を除外してみる
- 29. pandasの基本技 ―⾮値の処理 1―
• ⾮値は統計上扱いが難しい
• ⾮値を含むレコードの削除は簡単。 dropna()メソッドを使う
• ただし、標本数が少なかったり、⽋測が多いと削除しづらい
• 時には、⾮値は列の平均やパターンから予測した値に変換する
29
NaNを含む全レコードを削除する例
- 30. pandasの基本技 ―⾮値の処理 2―
• 特定の列に⾮値NaNを含むレコードを削除したいことがある
• dropna()メソッドを使う
• ただし、引数subsetに、対象の列名のリストを指定する
30
説明はスキップして良い
- 38. 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で閲覧しやすい。
- 43. 参考⽂献
• 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
- 44. 参考⽂献
• Python, pandas, seabornでペアプロット図(散布図⾏列)を作成
• https://note.nkmk.me/python-seaborn-pandas-pairplot/
• PythonでPandasのPlot機能を使えばデータ加⼯からグラフ作成
までマジでシームレス
• https://qiita.com/hik0107/items/de5785f680096df93efa