PYTHON日記 ”Python実践データ加工/可視化100本ノック”をやってみた 3

第1章(ノック1〜20)

 第1章です。ネットにアップされているデータ(csvファイル)をデータ処理しやすくするための加工方法について学びます。この章で解説されている内容は、csvをエクセルで読み込んでエクセル上で処理することもできますが、pythonでデータ処理をする基本事項の解説という側面もあるので、やってみて損はないと思います。PCでデータ処理するといつも悩まされる日付型(datetime)データについても触れられており参考になりました。

 教材データは法人情報データです。元データがどこのものか分かりませんが、法人番号制度が始まって法人情報のデータ化が進んでいるんだなあと思いました。私が探してみた範囲ではgBizINFOで似たようなデータを提供していました。

 作業はpyhtonの基本ライブラリであるpandas、OS、glob、matplotlib、seabornなどを使います。ところでpythonの優位性は構文がわかりやすいことに加え、豊富なライブラリ群にあると言われています。素人発想で間違っているかもしれませんが、言語の特徴というのは言語本体よりもライブラリのラインアップによるように思います。swiftなんかも独自ライブラリに加え、python用のライブラリをそのままインポートできれば便利なような気がするんですがどうなんでしょうか。

 閑話休題。この章での私が学んだ主な内容、感想は以下のとおりです。

  • Pandasライブラリ
    • データを扱うための必須ライブラリ
    • インポート文”import pandas as pd”は慣用句
    • pd.pivot_table(DataFrameオブジェクト, index=‘インデックス項目’ ,columns=‘列項目’ ,aggfunc=’集計方法’)でピポットテーブルを作成することもできる
    • 要素の取り出しは、DataFrameオブジェクト.loc[ ]を使う
  • osライブラリ
    • ファイル、フォルダを操作するライブラリ
  • globライブラリ
    • 特定のパターンにマッチするファイルの「かたまり」を取得するライブラリ
    • インポート時は”import glob”でもよいが”from glob import glob”でglobライブラリ全体を読み込まないという方法もある
  • matplotlibライブラリ
    • グラフを作成するライブラリ
    • インポート文”import matplotlib.pyplot as plt”は慣用句
  • seabornライブラリ
    • データ可視化ライブラリ
    • インポート文”import seaborn as sns”は慣用句
  • データを分析用に加工する手順は
    • データを読み込む
      • pd.read_csv(‘ファイル名’, encoding=‘エンコード’, sep=‘セパレート文字’)
      • 列名を必要に応じて定義する
      • 元データに適切な項目名が設定されていない場合は、項目名を列挙したデータファイルを作り、mergeで元データと結合する
    • データの型を必要に応じて修正する
      • 日付はdatetime型にすべき
      • DataFrameオブジェクト.dtypesで各項目のデータの型を一覧表示
    • データが欠けている箇所を補充する
      • DataFrameオブジェクト.isna()でNan(欠損値:Not a Number)を表示して確認
      • DataFrameオブジェクト.isna().sum()でNanの合計値を表示できる
      • DataFrameオブジェクト.fillna(method = ‘xxx’)[xxxをffillにすると前方値、bfillにすると後方値で補完]
    • 重複データを削除する
      • DataFrameオブジェクト.drop_duplicates(subset = ‘項目名’ ,keep=‘last’, inplace = True)[重複データの最後を残し、上書きする場合]
  • 複数のデータを統合する
    • adataにbdataを統合する場合、adata.merge(bdata, on = ‘一致させる項目’ ,how = ‘統合先とbdataのどちらを基準とするか’)[統合先する場合はleft、bdataとする場合はright、両方を対等に扱う場合はinner]
  • データの簡易分析方法
    • グラフの描写サイズを設定する
      • plt.figure(figsize = (x,y))
    • グラフを描写する
      • plt.bar(x,y):棒グラフ、plt.barh(x,y):横向き棒グラフなど

Bergamot

シェアする

コメントを残す

メールアドレスが公開されることはありません。

コメントする