Python でデータ分析:DataFrameの整理とデータ型の変換

Python

Python でCSVファイルを読みこんでもこのままでは分析に使えないので、データの整形が必要になります。

この記事は以下のような人におすすめ。

  • pandas で不要なヘダーの削除方法を知りたい
  • numpyを使ってセル内の不要な記号を消したい。
  • データ型を変換する方法を知りたい。

プログラミング無料体験はこちら↓↓↓



データの種類によって整形方法が変わりますが、今回のデータの場合、まず不要なヘダーを消すことから始めましょう。

データはこちらの「pythonでデータ分析:CSVファイルの読み込みと表示」で読み込んだデータを使っています。

Pandasによるデータ整形:不要なヘダーの削除

まず目につくのが「国債金利情報」っていう行ですね。

この行が分析の邪魔になるので、さっそく消してみましょう言いたいところですが、それよりも簡単な方法があります。

CSVデータを読み込む際に、2行目から読み込むように指定すれば、一行目は読み込まれません。

記述は下記の通り。

import pandas as pd
df = pd.read_csv('jgbcm_all.csv', encoding = 'shift-jis', header = 1) # header を1に指定する
display(df)

行を消すために格闘するよりも、簡単に消せました。

次に気になるのが、一番左端のindexですね。

これも、「基準日」がインデックスにあるほうが分析しやすいのでindexを基準日に変えておきましょう。

この場合も一行目を消したとき同じように「index_col=0」を使って、最初から読み込まないようにするのが一番簡単です。

df = pd.read_csv('jgbcm_all.csv', encoding = 'shift-jis', header=1, index_col=0)
display(df)

これを実行すると行番号が消え、だいぶすっきりしたDataFrameが出来上がりました。

しかしまだまだ、データ整理は続きます。

numpy を使ってセル内を空にする

この長期国債金利のデータですが、数字が無い部分に「-」という記号が入っています。

見えるところでは、10年から40年までに「-」が入っているのが見えますが、他の場所にも入っているんですね。

このデータを使って、各年ごとの金利の推移をグラフで書きたいのですが「-」が入っているとグラフがうまく書けないんですね。

このデータでしっかりとしたグラフを作るためには「-」を削除し、セルを空にする必要があります。

pythonで文字列を置き換える

そこで「.replace」を使って「-」を「NaN」に置き換え、ついでに元データに変更を反映させるために「inplace=True」を記述します。

こんな感じ。

df.replace(['-'], np.nan, inplace=True)

これを実行すると「-」が「NaN(Not a Number)」に置き換わりました。

データの型を変換する

データの形がここまで整ってきましたが、このままではまだ、グラフを描いたりすることができません。

その前に、グラフの型をオブジェクト型からフロートが型に変更しておく必要があります。

そこでまず「.dtypes」を使って、データの型を調べます。

print(df.dtypes)

結果は以下のようになります。

1年から3年、そして10年から40年までがオブジェクト型なのが分かります。

そこでこれらを「float」型に変換します。

変換に必要なのが「.astype」。

変換に必要なコードは以下になります。

df_f = df.astype({'1年': float, '2年': float, '3年': float, '10年': float, '15年': float, '20年': float, '25年': float, '30年': float, '40年': float})
print(df_f)

変換した結果を見てみましょう。

print(df_f.dtypes)

でもう一度データタイプを表示します。

無事に変換できました。

まとめ

CVSデータを整理することで、分析をしやすくするのですが、この過程で二つの問題がありました。

一つは、本来空であるべきセルに入っている記号「-」をどのように消去するか。

そしてもう一つは、データタイプが違うことで、プロットが作成できなくなってしまうことです。

そこで、記号「-」をNaNに一気に変換するために「.replace」メソッドを使うことで、元データをいちいち修正しなくて済みました。

データタイプが違うことについては、「astype」を使うことで、データタイプを統一。

全ての年代でプロットをすることができました。

プログラミング無料体験はこちら↓↓↓


関連記事↓↓↓

Python:データ分析。「.T」を使った行と列の入れ替え
Pythonを使った簡単なデータ分析の方法を、見ていきましょう。 まずは「pandas」を使って、農林水産省の食料自給率に関するデータのCSVファイルを読み込みします。 この記事はこんな人におすすめ ...
Python:DataFrame から不要な行を消す「.drop」
消費者物価指数の、年ごとの変化率をグラフ化してみましょう。 例によって総務省統計局からのデータ引用で、1970年から2020年までの前年度比の変化率をグラフにしてみます。 基本はデータをダウンロードし、CSVファイルを読み込んで...

コメント

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