Pandas入門講座|13.時系列データの扱い方【PythonのライブラリPandas】

オススメ

この動画では、時系列データ処理について学びます。
時系列データとは、時間を軸に記録されたデータの集まりです。
時系列データの代表的なものには、人口推移のデータや気温や湿度などの気象データ、株価のデータなどがあります。
Pandasでは、データフレームのインデックスを日付型にすることで時系列データとして扱えるようになります。
こうすることで、指定した日数での集計、月末だけの集計、週次や月次の集計などが簡単にできます。
株価などの経済データを好きな期間で分析することもできますし、移動平均や指標となる数値を追加すればさらに深い分析まで可能になります。
それでは、いってみましょう!

▼目次
00:00 はじめに
01:14 準備
01:43 データの読み込み
03:47 時系列データへの変換
07:04 時系列データの抽出
07:44 時系列データの集計
09:34 曜日ごとの集計

▼関連動画
Pandas入門講座|06.CSV・Excelファイルの読み込み・書き出し、データベースとの接続方法【PythonのライブラリPandas】

Pandas入門講座|06.CSV・Excelファイルの読み込み・書き出し、データベースとの接続方法【PythonのライブラリPandas】

▼おすすめ動画
Pythonで面倒なExcelの仕事を自動化しよう【第一弾】

Pythonで面倒なExcelの仕事を自動化しよう( 第一弾 )|一瞬で仕事がおわるプログラミング活用術

Pythonで面倒な「ブラウザ操作」や「データ収集」の作業を自動化しよう

Pythonで面倒な「ブラウザ操作」や「データ収集」の作業を自動化しよう|Webスクレイピングのやり方をわかりやすく解説

Pythonで面倒な「メール配信(Gmail)」の作業を自動化しよう

Pythonで面倒な「メール配信(Gmail)」の作業を自動化しよう|一瞬で仕事がおわるプログラミング活用術

Python超入門コース |Pythonの超基本的な部分をたった1時間で学べます【プログラミング初心者向け入門講座】

Python超入門コース 合併版|Pythonの超基本的な部分をたった1時間で学べます【プログラミング初心者向け入門講座】

▼自己紹介
現在:フリーランス(マーケティング関連の人工知能開発、データ分析や業務自動化など)
前職:リクルート

▼SNS
Twitter : https://twitter.com/kino_code/likes
Facebook :https://www.facebook.com/%E3%82%AD%E3%83%8E%E3%82%B3%E3%83%BC%E3%83%89-105693727500005/

▼文字書き起こし
準備
import pandas as pd

Pnadasをインポートする記述をします。

pd.options.display.max_rows = 10
pd.options.display.max_columns = None

次に見やすさの観点から、表示する列数、行数を変更しましょう。
pd.options.display.max_rowsで行数を10行に、pd.options.display.max_columnsで列数は無制限に設定します。
実行します。
これで準備ができました。

データの読み込み
df = pd.read_csv(‘sample.csv’, encoding=’utf-8′,header=[0])
df

それでは使用するデータを見てみましょう。
ダウンロードいただいた2つのcsvファイルは、アパレル会社の販売データです。
sample.csvは、実績管理表で、社員ごとに何をいくら売り上げたのかがわかります。
もう1つのsample02.csvも同じく実績管理表ですが、異なるのは売上日の入力方法です。
sample.csvの売上日は、このように「/」で区切られています。一方のsample02.csvは、売上日は「年月日」の表記です。
まずはsample.csvファイルを読み込みます。
csvファイルの読み込みには、レッスン6で説明した「read_csvメソッド」を使います。
1行目に項目の行があるので、これをカラム名として読み込めるよう、引数headerに0を指定します。
読み込んだデータを変数dfに代入して、表示してみましょう。実行します。
データを読み込むことができました。
それでは、読み込んだ売上管理表のデータフレームを使って、pandasで時系列データを扱う方法を見ていきましょう。

df.info()

このデータフレームの情報を確認してみましょう。
列に売上日、社員番号などの項目が、行にインデックス番号が付与されています。
インデックスは、RangeIndexです。これは、読み込んだときに自動でできたインデックス番号0123…のことです。
また、データ型は売上日から商品名までがobject、文字列で、単価、数量、売上金額はint64の数値型であることがわかります。
このままでは、これまでのレッスンで見てきたデータフレームと変わりません。
時系列データとして扱うためには、データフレームのインデックスが日時のデータになっている必要があります。
データには、売上日という日付のカラムがあります。
このカラムを、インデックスに変更してみましょう。

時系列データへの変換
df[‘売上日’] = pd.to_datetime(df[‘売上日’])
df[‘売上日’])

まず、売上日の列が文字列になっているので、日時型に変換します。
データ型の変換では、astype関数を使ってきましたが、ここではPandasのto_datetime関数を使います。
to_datetime関数にカラム名の売上日を渡します。表示もしましょう。実行します。
見た目はハイフン表示であまりわかりませんが、データ型がdatetime64[ns]となりました。
datetime64[ns]とは、日時型のひとつで、Pandasで時系列データを扱うのに適したデータ型です。
このように、to_datetime関数で、スラッシュやハイフンを使って日付として入力されたデータはdatetime64[ns]に変換されます。
次に、日時のデータ型になった売上日をインデックスに指定しましょう。

df_2 = df.set_index(‘売上日’)
df_2

すでにあるカラムをインデックスに指定するには、set_index関数を使います。
df.set_index、丸括弧の中にインデックスにしたいカラム名を渡します。これを変数df_2に代入します。
実行します。インデックスが売上日になりました。

df_2.info()

では、変更したデータフレームの情報を見てみましょう。
このように、インデックスがDatetimeIndexに変わりました。
これで時系列データを扱う準備ができました。

df02 = pd.read_csv(‘sample02.csv’, encoding=’shift-jis’,header=[0])
df02

次に、sample02.csvも読み込んでみましょう。先ほどと同様、1行目をカラムにして読み込みます。実行します。
このように、売上日は年月日の表記です。

df02.info()

このデータフレームの情報を見てみましょう。

df02[‘売上日’] = pd.to_datetime(df02[‘売上日’])

売上日のデータ型は、objectの文字列です。時系列データとして扱うには、先ほどと同様にデータ型を日付の型に変換する必要があります。
to_datetimeで変換してみましょう。
エラーになりました。年月日の表記では変換できません。

df02[‘売上日’] = pd.to_datetime(df02[‘売上日’], format=’%Y年%m月%d日’)
df02[‘売上日’]

このような場合は、formatで日付の形式を記述することで変換できるようになります。実行してみましょう。
年月日の表記でも日時のデータ型に変換できました。
このデータフレームも、売上日をインデックスに指定すれば、時系列データとして扱えるようになります。

df = pd.read_csv(‘sample.csv’, encoding=’utf-8′, header=0, parse_dates=True,index_col=’売上日’)
df

ここまで、読み込んだデータフレームから日時カラムをインデックスに指定する方法を説明しました。csvを読み込む時点でもこの設定が可能です。
引数parse_datesにTrueを渡し、引数index_colで列名を指定します。
引数parse_datesは、読み込みと同時に日時の列はto_datetime() で変換する引数です。予めデータがわかっている場合は列名をリストで渡しても変換できます。
実行します。
インデックスが売上日のデータフレームができました。
さて、これで時系列データを扱う準備ができました。

続きは文字書き起こしブログにて。

▼書き起こしブログ
https://kino-code.com/pandas_chronological_order/

#PythonとPandas #Pandas入門 #Pandas使い方

▼お仕事のお問い合わせ
キノコードでは、仕事の自動化の開発業務&コンサルティング業務のみを現在受け付けております。
お問い合わせ先かTwitterのDMか、「キノコードトップページ→概要」にあるメールアドレスまでお問い合わせください。

コメント

  1. 地球村 より:

    いつも勉強させて頂いてます。とても素晴らしい内容で感謝しております。ありがとうございます。
    内容に、一点質問がございます。
    時系列データへの変換
    df[‘売上日’] = pd.to_datetime(df[‘売上日’])
    df[‘売上日’])
    こちらのコードを打つと
    File ““, line 2
    df[‘売上日’])
    ^
    SyntaxError: unmatched ‘)’
    というエラーが返ってくるのですが、どうしてでしょうか。
    もしよろしければご回答を頂けますと幸いです。

  2. 中国ビジネス自由研究所 より:

    いつも大変有益な動画をありがとうございます。キノコードさんの動画で勉強させて頂いております。昨今、株式や経済指標について分析することが多く、こちらの動画内容を是非学びたいと考えているのですが、こちらの動画で使う二つのCSVファイルが現在でもダウンロード可能でしょうか?kino-code.comで見つけることができませんでした。。

  3. Farm Animal より:

    sample02.csvが文字化けしていて読み込めないです

タイトルとURLをコピーしました