【Python/pandas】社内のexcelファイルをexcelのままpythonで扱う

Python

みなさんこんにちは!ほぬです!

前回の記事では、社内のExcelファイルをcsvに保存しなおして、pythonで開いて加工して・・・
という手順をやりましたが、よく調べてみると普通にexcelから読み込めました。。。

ということで、今回はExcelファイルのまま読み込んで、空白埋めたりして、保存する処理をやっていきたいと思います!
基本的な手順は前回と同じですが、最初からExcelで取り込むことで、データの型の処理等がいらないくなって簡単になっています!

Excelファイルをpythonで開こう

前回は用意してあったexcelファイルを一度csvに保存しなおしましたが、今回はその作業はいりません。用意してあったexcelをそのままpythonで読みに行きます。

そもそもの下準備として、パンダを導入する
import pandas as pd

用意してあったexcelファイルを読ませる。

df = pd.read_excel(‘./governancedata20200105.xlsx’,sheet_name =’Sheet2′)
df.head()

前回のcsvを読み込むのと似ているけどちょっと違いますね!
読み込むファイルのパスの末尾(拡張子)が.xlsxになっていることと、読み込むシートの名前を指定してあげる必要(sheet_name=の部分)があること、文字コードを指定する必要がない(今回はsep=とencoding=がない)部分が違います。

一番左のIndexいらないので消そう

ここは前回と全く一緒です。
一番左の行番号いらないので、codeをキー(index)にする
df.set_index(‘code’, inplace=True)
df.head()

データの型を確認する

さて、ここで一度データの型を確認してみましょう。
前回との最大の違いがここになります。

なななんと、前回小数点の数値(float)であってほしいのに文字列混じり(object)になってしまっていたところや、整数値(int)がほしいのに小数点数値(float)になってしまっていたところ、果ては、前回処理しきっていない、日付の部分(datetime)まで、きちんとしたデータの型になってくれています!

Excelから直に読み込んだことで、Excel上でみなさんが見ていた形式でそのまま読み込むことができています。恐るべし。。。

空白セルは後々面倒なので探して埋めよう

空白セルを見つける
df.isnull().sum()

空白セルを埋める。空白だと集計の時とかに対象外になっちゃったりする。
df.fillna(value={‘supervisor’: 0}, inplace=True)
df.fillna(value={‘outside_sv’: 0}, inplace=True)
df.fillna(value={‘outside_sv_ratio’: 0.0}, inplace=True)
df.isnull().sum()

ちょっとした違いですが、前回(修正後)のものは、outside_sv_ratioを’0.0%'(文字列)で埋めたのですが、今回は0.0(数字)で埋めています。
これは、先ほど言った通り、excelで読み込んだことで、○○%が文字列ではなくてきちんと数値として読み込めているからこその違いです。

これで空白埋めは完了していますが、空白埋めて変なことをして型が変わってしまっていないか念のためチェックしましょう。

大丈夫そうですね!

成形済みのものを別のcsvファイルに保存する

これでデータの成形が済んだので、できた新しい配列をcsvに保存する
df.to_csv(‘./governancedata20200105_3.csv’, encoding=’utf-8′)

完成物をpython上で眺めよう

最後に、保存したファイルをpython上で開いて眺めてみましょう。

前回より簡単に、前回同様のファイルを作れましたね。
しかも、よく見ると右端のupdate_dateのところが前回は「2019/6/12」みたいな感じだったのが今回は「2019-06-12」みたいになっています。
前回はupdate_dateの箇所の型変換をさぼったので、文字列になったままなのですが、今回は読み込んだ瞬間から日付の型にきちんとなってくれています。ありがたやありがたや。。。

今回は以上になります!

ほぬ

コメント

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