はじめに
前回は、ZiDOMA dataで取得したCSVファイルをPythonで読み込む、
Excelを開く、保存する部分の実際の実装方法を紹介しました。
今回は、CSVファイルから読み込んだデータをpandasを使って
分析レポート用に集計した際に使用した主な関数をご紹介します。
"pandas" とは
Pythonでデータ分析を効率的に行うためのライブラリで、以下の作業を容易に行うことができます。
- (大量な)データの読み込みや並び替え
- データ分析
- グラフ化
また、pandasを利用して処理を進めると、非常に高速に処理を行うことができます。
以下では、主に使用した関数をご紹介します。
1. データを読み込む
# pandasライブラリを使いますよという宣言
import pandas as pd
# CSVライブラリを使いますよという宣言(前回紹介)
import glob
# 読み込んだCSVのデータを"list_file_summary"に格納します
file_summary = glob.glob('data/csv/*_グラフデータ_*.csv')
# CSVファイルからデータ読み込むときの各列項目名
columns_summary = ['グラフタイプ', 'タイトル', 'サイズ', 'カウント', '対象ディレクトリ']
# pandasにデータを入れる箱を用意
df_import_summary = []
# "df_import_summary" に取り込んだデータを以下のルールで取り込むと指定する
for file_s in file_summary:
df_import_summary = pd.read_csv(file_s, index_col=None, header=0, usecols=columns_summary, encoding='cp932', engine="python")
# file_s読み込んだCSVのデータファイルを1つずつ処理を行う繰り返し処理用に定義
# index_col→CSVファイル内にインデックスが含まれないことを指定する
# header→ヘッダー(データのタイトル)が何行目にあるのか指定する(最初の行は0行目)
# usecols→特定の列のみ取り込む場合は列を指定する(列を指定する場合は、列番号、もしくは列名を指定)
# encoding→文字を指定しておかないと文字化けする場合がある(例えば、Windows環境の場合)
2. クエリを作成する
import pandas as pd
# 1.のcolumns_summaryにあった'グラフタイプ' が "合計" の場合のデータ抽出を行います。
df_file_cover = df_import_summary.query('グラフタイプ == ("合計")')
3. データをソートする(並べ替え)
import pandas as pd
# 1.のcolumns_summaryにあった'グラフタイプ' が "ファイル所有者" の場合でデータを抽出し、
# ファイルサイズで降順並べ替えたうえで、Top50件に絞ります。
df_file_owner = df_import_summary.query('グラフタイプ == ("ファイル所有者")').sort_values("サイズ", ascending=False).head(50)
# デフォルトは "昇順"なので、どの値を基準にソートするかを指定する
# (ランキングのように降順にする場合は "ascending=False")
# head(50)で50件に絞り込みが可能
4. Excelに書き込む
import pandas as pd
# Excelライブラリを使いますよという宣言(前回紹介)
import openpyxl
# 書き込み先のシート名を指定する
sheet_file_owner = ExcelBook['シート名']
# ファイルサイズをByteからMBへ再計算
file_size = df_file_owner_fix.iat[y, x] / 1024 / 1024
# 例:2行目、1列目にファイルサイズを入力
sheet_file_owner.cell(row=2, column=1).value = file_size
# エクセルファイルを保存(参考:前回の記事)
ExcelBook.save(ファイル名)
# 整理したデータを表として記載するときはfor文を使用して処理を繰り返します。
さいごに
実際に私自身が作成した際、今回ご紹介した関数を使って作りました。
取り込んだデータを計算したり、並べ替えをするだけで
様々な観点での集計レポートができるようになります。
また、今回はご紹介していませんが、取り込んだデータを使って
グラフを作成することもできますので、いろいろと試される方の参考になれば幸いです。
関連記事:
"100TB"のファイルサーバにあるファイルを断捨離するために(1)
https://qiita.com/karin_to/items/8a375f41de0e4f754cfb
"100TB"のファイルサーバにあるファイルを断捨離するために(2)
https://qiita.com/karin_to/items/7e1dab963e0dc0ba2e9b
"100TB"のファイルサーバにあるファイルを断捨離するために(3)
https://qiita.com/karin_to/items/a2ee0d8332f1151b3b87
"100TB"のファイルサーバにあるファイルを断捨離するために(4)
https://qiita.com/karin_to/items/2731295a4d0a8d40e590
