5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

"100TB"のファイルサーバにあるファイルを断捨離するために(5) ~ツール作成実践編②~

Posted at

はじめに

前回は、ZiDOMA dataで取得したCSVファイルをPythonで読み込む、
Excelを開く、保存する部分の実際の実装方法を紹介しました。

今回は、CSVファイルから読み込んだデータをpandasを使って
分析レポート用に集計した際に使用した主な関数をご紹介します。

image.png

"pandas" とは

Pythonでデータ分析を効率的に行うためのライブラリで、以下の作業を容易に行うことができます。

  • (大量な)データの読み込みや並び替え
  • データ分析
  • グラフ化

また、pandasを利用して処理を進めると、非常に高速に処理を行うことができます。

以下では、主に使用した関数をご紹介します。

1. データを読み込む

read_csv.py
# 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. クエリを作成する

pd_query.py
import pandas as pd

# 1.のcolumns_summaryにあった'グラフタイプ' が "合計" の場合のデータ抽出を行います。
df_file_cover = df_import_summary.query('グラフタイプ == ("合計")')

3. データをソートする(並べ替え)

pd_sort.py
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に書き込む

wr_excel.py
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

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?