データの準備#

一般に解析データはCSVファイルで渡されることが多いです。Pythonでは、CSVファイルの読み取りは、 csv, numpy, pandasなどで行います。
 本項では、pandasを用いたデータの読み込みを行います。pandasはデータ分析の基本的なツールであり、データの抽出・整形、統計量の表示などが行えます。ただし、操作にすこし癖があるので、慣れないと四苦八苦する部分もあるかと思います。
 この後に続く項目でも pandas.Dataframe 形式でデータが保持されているとします。

pandas の詳細な使い方については、 公式ドキュメント を参照してください。

pandasによるCSVファイルの読み込み#

まずは、pandas モジュールを使えるようにします。

import pandas

2020413_raw.csv という化学プラントデータが、Pythonの実行ディレクトリからみた相対パスで ../data/2020413_raw.csv にあるとして、これを読み込みます。
 次のスクリーンショットのように、一列目が時刻情報のindexです。

fig01

import warnings


fname = "../data/2020413_raw.csv"

with warnings.catch_warnings(
    record=True
) as w:  # データの読み込みでWarningが発生するので捕捉する
    df = pandas.read_csv(fname, index_col=0, parse_dates=True, encoding="shift-jis")
w[0].message
pandas.errors.DtypeWarning('Columns (9,19) have mixed types.Specify dtype option on import or set low_memory=False.')

pandasからWarningが出ていますが、こちらは後ほど欠損値処理 の項目で説明するので一旦おいておきます。
read_csvの引数はそれぞれ次のようになっています。ほかにもいろいろありますが、よく使うのはこの辺だと思います。詳しくは公式ドキュメントを参照してください。

  • 第一引数 : ファイル名

  • index_col : indexにする列番号(指定しないと自動で連番が振られる)

  • parse_dates : Trueのとき, 自動でindexを時刻datetimeに変換。何も指定しないと、文字列のまま。(date_parser と間違えやすいので注意)

  • encoding : ファイルのエンコード情報の指定(shift-jis, utf-8, cp932)

ファイルのエンコード情報が違うと次のようなエラーがでます。ファイル形式やOSに依存するため試行錯誤が必要です。
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8e in position 0: invalid start byte

pandasデータの表示#

pandasの生データを表示しましょう。全部表示すると邪魔なので、head()を用いて頭の数行を表示します。

df.head()  # `index_col=0`を指定したのでCSVファイル1列目(時刻)がindexになる
気化器圧力_PV 気化器圧力_SV 気化器圧力_MV 気化器圧力_MODE 気化器液面レベル_PV 気化器液面レベル_SV 気化器液面レベル_MV 気化器液面レベル_MODE 気化器温度_PV 気化器ヒータ出口温度_PV ... 反応器流入組成(H2O)_PV 反応器流入組成(HAc)_PV セパレータ蒸気排出量_MV (Fixed) セパレータ蒸気排出量_MODE (Fixed) アブソーバスクラブ流量_MV (Fixed) アブソーバスクラブ流量_MODE (Fixed) アブソーバ還流流量_MV (Fixed) アブソーバ還流流量_MODE (Fixed) 気化器液体流入量_MV (Fixed) 気化器液体流入量_MODE (Fixed)
2020-04-13 00:00:00 127.983294 127.883920 18.728267 AUT 0.700204 0.7 21876.987772 AUT 120.15955841553482 151.274003 ... 0.008524 0.109444 16.1026 AUT 15.1198 AUT 0.766 MAN 2.1924 AUT
2020-04-13 00:00:01 128.262272 127.807691 18.728267 AUT 0.700865 0.7 21876.987772 AUT 120.07257486304935 151.218620 ... 0.008512 0.109441 16.1026 AUT 15.1198 MAN 0.766 MAN 2.1924 AUT
2020-04-13 00:00:02 127.899077 127.991074 19.079324 AUT 0.699740 0.7 21918.359526 AUT 120.30532712904707 151.201067 ... 0.008541 0.109871 16.1026 AUT 15.1198 AUT 0.756 MAN 2.1924 AUT
2020-04-13 00:00:03 127.622218 127.990697 18.772228 AUT 0.699970 0.7 21892.166478 AUT 120.21948819246609 151.220816 ... 0.008573 0.109775 16.1026 AUT 15.1198 AUT 0.746 MAN 2.1924 AUT
2020-04-13 00:00:04 127.577243 127.903788 18.605173 AUT 0.700939 0.7 21885.688813 AUT 120.30226736316207 151.165624 ... 0.008547 0.109868 16.1026 AUT 15.1198 AUT 0.766 MAN 2.1924 AUT

5 rows × 117 columns

CSVファイルと同じ内容が表示されています。確かにデータが読み込めているようです。

小括#

pandas を用いて、CSVファイルからデータを読み込みました。
 次の項目では、上で発生した Warning に関する欠損値処理を行います。