LoginSignup
2
1

More than 5 years have passed since last update.

pandasで作る勤怠チェック(基本編)

Last updated at Posted at 2018-12-15

pandasで作る勤怠チェック(基本編)

背景

  • 一日どの作業に何時間使ったか、というExcelファイル「作業管理表」がある。
    input.PNG

  • 作業別に作業時間の集計作業のニーズ有り。

  • Excelでvlookupがあるが「ファイルを開かないとわからない」

目的

  • (基礎)ローカルにある1つのファイルを開き、作業別に集計する。
  • (応用)ネットワーク上のファイル共有サーバにアクセス、フォルダ内にある複数のファイルを順次開き、担当者別作業別に集計する。

 コーディングのポイント

  • INPUT:「どのファイル?、そのシート?、どの番地から読み込む?」の指定。
  • Transaction:「どの列情報を抜き出したい?」「サマリキーは?」の指定。
  • Output:特になし。自由。

基礎編

test.py
import pandas as pd

# Input_01:作業管理表を読み込む
file = pd.ExcelFile('import/作業管理表(名前).xlsx', encoding='utf8')

# Input_02:作業内訳シートを読み込む
sheet_df = file.parse('Sheet2', header=None)

# Transaction_01:ヘッダ行、空行を読み飛ばす。
sheet_df_no_header = sheet_df[3:]# データ行のみ

# Transaction_02:プロジェクト名、時間の列にデータを絞る。
sheet_df_select_loc = sheet_df_no_header.iloc[:,[2,4]]# 作業単位
sheet_df_select_loc_sum = sheet_df_no_header.iloc[:,[4]]# 合計

# Transaction_03:headerの指定と、集計キーの指定
sheet_df_select_loc.columns = ['proj', 'time']
grouped = sheet_df_select_loc.groupby('proj')# 作業名で集計

sheet_df_select_loc_sum.columns = ['totalTime']

# Output_01:コンソール表示
print("--1.稼働明細------------------------------")
print(sheet_df_select_loc)
print("--2.稼働集計------------------------------")
print(sheet_df_select_loc_sum.sum())# 合計
print(grouped.sum())# 作業別
print("--End------------------------------")

# Output_02:CSVファイル出力
sheet_df_select_loc_sum.sum().to_csv('to_csv_out_a.csv', mode='a')# 合計
grouped.sum().to_csv('to_csv_out_a.csv', mode='a')# 作業別

結果(コンソール)

console.log
--1.稼働明細------------------------------
        proj  time
3   既存システム保守     7
4         朝会   0.5
5     システム開発     9
6        定例会     2
7   既存システム保守  7.25
8     システム開発     4
9     システム開発     4
10    システム開発   1.5
11        朝会   0.5
12    システム開発     4
13  既存システム保守   3.5
14        朝会   0.5
15    システム開発  4.25
16       NaN   2.5
17  既存システム保守   1.5
18  既存システム保守     2
19    システム開発   3.5
20       定例会     2
21    システム開発     2
22  既存システム保守  8.25
23        朝会     1
--2.稼働集計------------------------------
totalTime    70.75
dtype: float64

proj           time
システム開発    32.25
定例会        4.00
既存システム保守  29.50
朝会         2.50
--End------------------------------

結果(csv)

sample.csv
totalTime,70.75
proj,time
システム開発,32.25
定例会,4.0
既存システム保守,29.5
朝会,2.5

改善効果

  • ファイルを開かなくなった分、集計作業が高速化。
  • 大量のファイル、データを捌くと効果大。応用編で試す。
2
1
1

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
2
1