pandasのデータの読み書き編集を理解する
執筆者:南波真之
※本記事は吉政創成株式会社「Python学習とキャリアアップ」より寄稿されたコラムとなります。

皆さん、こんにちは。
南波真之(なんばさねゆき)と申します。
前回はPythonでのデータ分析を容易にする機能のライブラリであるpandasについて取り上げてきました。Pandasを使う際の特有のデータ型DataFrameを使った多次元のデータの出力や取り出しをすることでデータの分析を行うことができる部分まで一緒に見ていきました。ご興味ある方はぜひご覧ください。
さて、今回はpandas(パンダス)です。私が勉強しているPythonによるあたらしいデータ分析の教科書(翔泳社)の、P143.〜P.158の部分にある、pandasを使った外部データの読み書きやデータの編集について学習してみました。
pandasでのデータ読み書き
pandasとは、Pythonでのデータ分析を容易にするような機能のライブラリです。データ分析のツールとしてはとてもよく使われているものです。データ分析をする際には、手元にあるデータをまず整理するところから始まります。これを前処理と呼ぶこともありますがこのデータ整理で大きく効力を発揮します。pandasは、NumPyを基盤にして2つのデータ型があります。1次元データのSeries(シリーズ)と2次元データのDataFrame(データフレーム)です。
分析をするデータというのは、1から作るよりは外部のツールやファイルから出力されたデータという場合が多いかと思います。主流なところでいうと、CSVやExcelになるでしょう。例えば自分のPCにあるCSVファイルをpandasを使って読み込んでみて出力をし、そのデータをpandasで整理しNumPyなども使って分析していくというような流れが取れます。
pandasでのデータ読み込み
まずは、データの読み込みについてです。試しにCSVファイルを読み込ませてみます。
## pandasで特定のCSVファイルの読み込み
df = pd.read_csv('data/202204health-data.csv', encoding="utf-8″)
df
CSVの中のデータが読み込まれて出力されました。

この読み込みで躓くところはCSVファイルの指定の部分になります。ファイルが見つからない事によるエラーはよく出ますので、読み込ませたいファイルをしっかりパス指定できているのかを確認しましょう。一番確実なのは絶対パス(Macであれば、/Users/ユーザー名/〜のなどのようになる)で指定してあげるといいです。
この手法はExcelでも可能で、Excelの場合はpd.read_csvの部分がpd.read_excelとなるだけです。
その他にもスクレイピングのような方法でWebサイトのHTMLを読み込んでデータを取り込むという方法もあります。
例えば、WikipediaのURLを指定してそこにある特定のテーブルを取得するなどです。
url = "https://ja.wikipedia.org/wiki/Python"
tables = pd.read_html(url)
## インデックス番号4番(5番目)の表を取得
df = tables[4]
df
pandasでのデータ書き込み
次はデータの書き込みです。作成したDataFrameをCSVファイルで書き出すこともpandasを使うと可能です。
df.to_csv("'data/202204-new-data.csv')
## Excelに書き出し
df.to_excel("'data/202204-new-data.xlsx')
これで該当の場所にファイルが出来上がることになります。
pandasを使って特定のWebページから読み込みを行ったDataFrameを編集して最終的にCSVファイルなどの形で書き出すという一連の流れができるようになります。
DataFrameをそのままファイルとして保存する
pandasには、今まで紹介してきたExcelやCSVの形式で書き出す他に、DataFrameそのままをファイル保存しておいて再利用させることも可能です。こちらのほうが手軽な気がします。
それは、pickleモジュールを使う方法です。
例えば、巨大サイズのCSVファイルを読み込み、データに手を加えていたとすると、CSVファイルの読み込みにも時間がかかってしまうことがあります。この場合に、1度CSVファイルを読み込んで、手を加えたところでファイルに保存しておくということを行います。これによって、その後はそのファイルを読み込むだけで以前の作業結果を復元できるということです。
import pandas as pd
df = pd.read_excel("data/sampleデータベース.xlsx")
## 出力
df

出力はこのようになります。
df.to_pickle("data/sampleデータベース.pickle")
## 保存した.pickleのDataFrameを読み込み、dfに代入
df = pd.read_pickle("data/sampleデータベース.pickle")
## 出力
df

出力はこのようになります。
同じものが出力されました。
このように、pickleに保存をしておくことでDataFrameをそのままファイルとして保存して再利用できるようになります。
pandasでのデータの編集
pandasを使ったデータの編集もよく使われます。例えば、データの抽出、並べ替え、削除などです。大量のデータが単にDataFrameになっているというのはもったいないので、自分が見たいデータだけを取り出して手を加えていくようにしていきます。
1つ目は、データの抽出です。特定の年齢帯の人だけを抽出したいという事はあると思います。
df_selected = df[df["年齢"] <= 30]
df_selected

出力はこのようになり、年齢が30歳以下の人だけがDataFrameとして出力されました。
2つ目は、条件を増やしたデータの抽出です。年齢と利用金額の2つを基準に抽出した上でその関係性を見るということも分析では行うこともあります。
## queryメソッドを使う
df.query('年齢 <= 30 and 利用金額 >= 90000')

出力は、こうなります。問題なく指定した条件のデータのみが出力されています。
その他、データの並べ替えは以下のように行います。年齢が大きい順に並べていますが、小さい順に並べたい場合は ascending=True とすれば並ぶようになります。
df.sort_values(by="年齢", ascending=False).head()

更に、表データを全て使う必要がない場合に、余分なカラムを削除するということも可能です。例では、「年齢」のカラムを削除しています。
df = df.drop("年齢", axis=1)

出力結果を見ると「年齢」が消えてしまっていますね。このように、DataFrameを様々自分の望ましい形にした上でデータ分析をしていくというのが基本的な流れとなってきます。
DataFrameを活用することで
今回は、pandasのDataFrameのデータの読み込みから書き込み、そして編集というところを取り上げてきました。
Pythonにおけるデータ分析でpandasは使われることが多く、身につけておきたい知識の1つです。理解すべき項目も多いですが、細かい部分を理解しておくことで応用が効くようになると思いますので、頑張りましょう。
インターネット・アカデミーは、Python講座が充実しています。Python認定スクールにもなっているため質の高い知識を得ることができ、基礎学習の先にあるそれぞれの目標を目指していくためには良い場所となります。ご興味ある方は各講座のページを覗いてみてください。
南波真之
デジタル人材育成・助成金のお役立ち資料をダウンロード

デジタル人材育成や助成金活用のお役立ち資料などをまとめてダウンロードしていただけます。コンサルタントへの無料相談をご希望の方はこちらからお問い合わせください。
- DX人材の育成&事例紹介 リスキリングのロードマップ付き
- デジタル人材育成に使える助成金制度
- デジタルスキル標準 役割別おすすめ講座