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

データ分析
Sponsored Link

Python でCSVファイルを読み込んでデータ分析をする際に、そのままで分析ができればいいのですが、通常はそんなことはありません。

そこで、データを分析に適した形に整形する必要があります。

csvデータ読み込みの記事はこちら↓↓↓

pythonでデータ分析:CSVファイルの読み込みの三つのポイント
Pythonでデータを可視化するための下準備として、CSSVデータの読み込みを行った再のメモを書いています。ファイル形式、文字コード、DataFrameの見やすさがキーですね。

整形方法は一つではなく、データの種類によって変わっていきますが、まずは分析に不要になりそうな部分の削除から行っていきましょう。

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

まず目につくのが「国債金利情報」っていう行ですが、「基準日」をheader にしたいので、削除する方法を考えてみましょう。

実は、削除するよりももっと簡単な方法があるのです。

CSVデータをPython に読み込む際に、2行目から読むようにすれば1行目は読み込まれず、2行目がheaderになります。

記述は以下の通り。

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

実行すると一行目が読み込まれなくなりました。

いい感じですね。

次に、インデックス番号が気になるので、これを見えなくしていきます。

「index_col=0」を使うことで、最初の読み込み時からインデックス番号を読み込まれないようにします。

削除するよりもよっぽど簡単に、headerとindexをラベルを消すことができます。

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

すっきりしましたね。

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

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

DataFrameを見てもらうとわかりますが、すうじがない部分に、「ー」という記号が入っていますね。

見える範囲では、10年から40年国債に入っているようですが、実際どれだけ入っているのか確認しようがありません。

しかもこの「ー」記号が入っていることで、グラフ描写がうまく実行できなくなってしまいます。

そのため、「ー」の部分を削除し、今後の処理に影響を及ぼさないようにする必要があります。

pythonで文字列を置き換える

データの置き換えに使うのが「.replace」。

これを使って「ー」を「NaN」に置き換え、さらに変更を固定するために「inplace=True」を記述します。

こんな感じ。

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

「ー」が「NaN」に置き換わっていますね。

データの型を変換する

さてさらにデータの整形は続きます。

目的としては国債金利のグラフ描写なのですが、その前に「.dtypes」を使ってデータタイプを調べ、オブジェクト型である場合、フロート型に変換する必要があります。

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

print(df.dtypes)

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

1年から3年までそして10年から40年までがobject型なのが分かりますね。

ではこれらを「.astype」を使って、float形に変換していきます。

記述は以下の通り。

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)

もう一度datatypeを表示して、変換されたかどうかを確認します。

print(df_f.dtypes)

無事に変換できました。

まとめ

普通にデータを読み込んだだけでは、データが整っていないので分析ができませんが、読み込んだデータを整理することで、より簡単に分析の作業に移ることができます。

そして今回の場合、データ整理の過程で二つの問題がありました。

まず、空のセルに「ー」という記号が入っていたこと。

データ分析には邪魔な記号なので「.replace」を使って一気に消去することが必要ということ。

もう一つは、データタイプがバラバラなので、プロット作成ができなくなってしまうということですため「aspype」を使うことで、データタイプを統一する作業が必要になりました。

これで、分析の準備が整ったようなので、さっそく分析をしてみましょう。

Sponsored Link

コメント

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