Pythonでエクセルファイルを扱いたい – openpyxl –

背景: Pythonを使うにあたってエクセルを取り込んでデータ分析を行うのは基本である。が、私は初心者ですいすい使うことが出来ない。Pythonはいろいろなことができるが、逆に使いこなすにはある程度まとまった実践的な知識が必要。自分で使えそうな情報をメモってみた。
目的: Pythonでエクセルファイルを扱うための基本事項をメモる。
単語: pandas, openpyxl
読者対象: Pythonの基本を知っている人。データ分析にエクセルファイルを取り込みたい人。

Pandasでのとりこみ (エクセルファイルをすぐデータフレームにする)

import pandas as pd
import
openpyxl
ネット情報で、excelファイルをpandasで読み込むには、xlrdが必要と考えていた。ところが最近はxlrdではxlsxファイルが読めないとのこと(奥村さんの記事)

形の定まったエクセルファイルをデータフレームに取り込むには、何のことはないopenpyxlをimportして、df.read_exel()で読めるらしい。

ちなみに、書き出しはcsvでdf.to_csv(‘ファイル名’)で良いでしょう。
ヘッダーがデフォルトで付きます。

エクセルデータで無双になりたい (個々の要素を扱う)

import openpyxl
pandasでうまく取り込めないようなデータ、凝った形の表のファイルもopenpyxlで取り込むことができる。まず、ブック形式で取り込み、各シート名からシートを抽出。行列を指定して要素を取り出すことができる。

wb = openpyxl.load_workbook(‘ファイル名’) エクセルファイルの読み込み
wb = openpyxl.Workbook() エクセルファイルの新規作成
wb.save(‘ファイル名’) エクセルファイルの保存

複雑なことができる代償として、扱いは厄介だ。
私の場合は、エクセルファイルでフォーマットされた経過記録が溜まっておりこれをどうにかPythonを用いて活用できないとかと考えていた。これは、1回ごとにブックファイルで作られておりファイル名に回数と日付が記録されていた。

まず、ブックファイルを取り込む方法ことを試みた。
これが出来てから、ファイル名ごとにイテレーションして複数のファイルを取り込むことに成功。
この際に、微妙なファイルごとの表記のずれでデータの取り込みがうまく行かないことがある。データに全角空白が入り込み\3000などという邪魔な情報も取り込まれる。その後、データの取り込みがうまく出来ているかを確認するプログラムが必要。
試行錯誤をしながらも、取り込むことに成功した。その後この辺のデータの取り込み法や日付のチェック、微妙な調整が必要となる。

しかし、この取り込みかたは、かなり複雑なので、今回は省略する。 いずれ紹介したい。

おまけ 取り込んだデータデータフレームをチラ見してちょいと加工しておく

せっかく取り込んだデータはちょっと確認しておきたい。ここでは取り込んだデータフレームの確認法とちょっとした加工について述べておく
df.describe
df.columns これは列名をリストアップ、ただし列名が多すぎると端折るので、list(df.columns)とするとすべての列名を出してくれる。
df.size
df.type
df.head(), df.tail()

df[‘列名’].value_counts() データを固有の値でカウントする
df[‘列名’].str.contains(‘キーワード’)あるキーワードを含む行で抽出

df.dropna(how=all)すべてのデータがない空白行の消去
df.dropna(how=all, axis=1) すべてデータのない列の消去
df.dropna(subset=[‘列名’]) ある重要な列データがない行を消去

細かいことを言うと、データが欠損していても別の列の情報から補完できることがあったり、補足用のファイルを作成して補完する場合があるが、とりあえず一覧を見るにはこんなところで良いでしょう。

Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です