非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

Python/PandasライブラリでExcelファイルやcsvファイルをデータベースのように扱う

   

前回、PythonでExcelファイルへの読み書きについて書きました。

 

Pandasというライブラリを使うとExcelファイルやcsvファイルをデータベースのように扱えるので便利です。基本的な使い方を紹介します。

使用したのは前回も使った以下のExcelファイルです。ExcelファイルをLibreOfficeで開いたものです。ファイル名は「名簿.xlsx」。

 

[ad#top-1]

Pandasのインストール

pipコマンドで一発でインストール可能です。

$ pip install pandas

 

Excelファイルまたはcsvファイルの読み込み

Excelファイルを読み込む場合は以下のとおりです。

import pandas as pd

fname = "名簿.xlsx"
sname = "Sheet1"
book = pd.read_excel(fname, sheetname=sname)
print(book)
 

 

csvファイルの読み込みは以下の通りとなります。

import pandas as pd

name = "名簿.csv"
book = pd.read_csv(fname)
print(book)
 

 

こちらを実行すると以下の通り全行のデータが現れます。

 

いろいろな抽出条件

ソーティング

年齢順に昇順に並び替え
book = book.sort_values(by="年齢", ascending=True)
 

 

 

検索条件

#年齢30より上を取得
book = book.query("年齢 > 30")
 

 

 

任意の位置を取得

book = book.loc[3:4] #index3から4を表示
book = book.loc[3:] #index3以降を表示
 

 

 

データのサイズを取得

print(book.shape) #データのサイズ
print(book.shape[0]) #データの行数
 

 

 

 

1行追加して別のExcelファイルに保存する

データフレームを作成してそれを追加した後、別のout.xlsxというExcelファイルに保存する方法です。

import pandas as pd

fname = "名簿.xlsx"
sname = "Sheet1"
book = pd.read_excel(fname, sheetname=sname)

df = pd.DataFrame(index=[], columns=['ID', '名前', '年齢'])
se = pd.Series([11, 'hoge', 66], index=df.columns)
book = book.append(se, ignore_index = True)

book.to_excel("out.xlsx", sheet_name="test")
print("OK")
 

 

出力したExcelファイルを見てみると、左端に余計なindex行が入ってしまうことと、なぜか罫線が入ってしまいます。元ファイルではなかったのですが…。

 

元ファイルにID列があったのですが、項目名(ID)を空欄にして0から開始すれば、この問題は解消します。

↓こういうファイルにしておけば良かったってこと。

 

[ad#ad-1]

スポンサーリンク

 - Python