質問編集履歴
3
書式の改善 補足事項の追記
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -33,13 +33,14 @@ | |
| 33 33 | 
             
            10	2021/6/16	a10	近藤	阿部		沖縄県	工事	99-xxxx-xxxx				¥234,000	8.0%
         | 
| 34 34 |  | 
| 35 35 | 
             
            ```
         | 
| 36 | 
            -
             | 
| 36 | 
            +
            ###上記を保管しているファイル名は「新・給与関係」という名前で、ファイル内は以下のようになっております。split_file というのが担当者枚に分けるコード(教えて頂いた)です。
         | 
| 37 | 
            +
            													
         | 
| 37 38 |  | 
| 39 | 
            +
            ###上記質問に対し2パターンのご回答を頂きました。自分で実行するとどうしてもエラーが出てしまし、何が原因なのか分かりません。基本的な質問で誠に申し訳ありませんが何卒よろしくお願いいたします。
         | 
| 38 40 |  | 
| 39 | 
            -
             | 
| 40 | 
            -
            ###各営業担当毎にデータを集計する為のコードです(教 | 
| 41 | 
            +
            ###各営業担当毎にデータを集計する為のコードです(2パターン教えて頂きました。)
         | 
| 42 | 
            +
            お教えいただいたコード➀
         | 
| 41 43 | 
             
            ```ここに言語を入力
         | 
| 42 | 
            -
             | 
| 43 44 | 
             
            import openpyxl as excel, json
         | 
| 44 45 |  | 
| 45 46 | 
             
            in_file = 'matome.xlsx'
         | 
| @@ -59,36 +60,83 @@ | |
| 59 60 | 
             
                users = {}
         | 
| 60 61 |  | 
| 61 62 | 
             
                sheet = excel.load_workbook(in_file).active
         | 
| 62 | 
            -
                for row in sheet.iter_rows():
         | 
| 63 | 
            +
                for i, row in enumerate(sheet.iter_rows()):
         | 
| 64 | 
            +
                    #5行目からデータを読み取る
         | 
| 65 | 
            +
                    if i<4:
         | 
| 66 | 
            +
                        continue
         | 
| 63 67 | 
             
                    values = [col.value for col in row]
         | 
| 64 68 | 
             
                    name = values[1]
         | 
| 65 69 | 
             
                    if name not in users: users[name] = []
         | 
| 66 70 | 
             
                    users[name].append(values)
         | 
| 67 | 
            -
             | 
| 68 71 | 
             
                return users
         | 
| 69 72 |  | 
| 70 73 | 
             
            def calc_user(rows):
         | 
| 71 74 | 
             
                total = 0
         | 
| 72 75 | 
             
                items = []
         | 
| 73 76 |  | 
| 74 | 
            -
                for row in rows:
         | 
| 77 | 
            +
                for row in rows:  
         | 
| 75 | 
            -
             | 
| 76 | 
            -
                    date, name, item, cnt, price, per = row
         | 
| 78 | 
            +
                    space,usercode, date, username, name, appointer,zipno, item, kouji, mobile, nazo, mail, cnt, price, per, bikou = row
         | 
| 77 79 | 
             
                    date_s = date.strftime('%m/%d')
         | 
| 80 | 
            +
                    items.append([date_s, name, item, cnt, price, per])
         | 
| 78 81 |  | 
| 79 | 
            -
                    items.append([date_s, name, item, cnt, price, per])
         | 
| 80 | 
            -
                    total += cnt * price
         | 
| 82 | 
            +
                    total += (cnt or 0) * (price or 0)
         | 
| 81 83 | 
             
                return {'items':items, 'total': total}
         | 
| 82 84 |  | 
| 83 85 | 
             
            if __name__ == "__main__":
         | 
| 84 86 | 
             
                split_list()
         | 
| 87 | 
            +
             | 
| 88 | 
            +
             | 
| 85 89 |  | 
| 86 90 |  | 
| 87 91 |  | 
| 88 92 | 
             
            ```
         | 
| 89 | 
            -
            ###実行後のエラーです。
         | 
| 93 | 
            +
            ###➀の実行後のエラーです。
         | 
| 94 | 
            +
            ```ここに言語を入力1 0
         | 
| 95 | 
            +
            2 0
         | 
| 96 | 
            +
            3 0
         | 
| 97 | 
            +
            4 0
         | 
| 98 | 
            +
            5 0
         | 
| 99 | 
            +
            6 0
         | 
| 100 | 
            +
            7 0
         | 
| 101 | 
            +
            8 0
         | 
| 102 | 
            +
            9 0
         | 
| 103 | 
            +
            10 0
         | 
| 104 | 
            +
            Traceback (most recent call last):
         | 
| 105 | 
            +
              File "C:/Users/hannchou6/Desktop/新・給与関係/salesman.py", line 43, in <module>
         | 
| 106 | 
            +
                split_list()
         | 
| 107 | 
            +
              File "C:/Users/hannchou6/Desktop/新・給与関係/salesman.py", line 11, in split_list
         | 
| 108 | 
            +
                result[name] = calc_user(rows)
         | 
| 109 | 
            +
              File "C:/Users/hannchou6/Desktop/新・給与関係/salesman.py", line 36, in calc_user
         | 
| 110 | 
            +
                date_s = date.strftime('%m/%d')
         | 
| 111 | 
            +
            AttributeError: 'NoneType' object has no attribute 'strftime'
         | 
| 112 | 
            +
            ```
         | 
| 113 | 
            +
            ###各営業担当毎にデータを集計する為のコードです。
         | 
| 114 | 
            +
            教えて頂いたコード➁
         | 
| 90 115 |  | 
| 116 | 
            +
            ```ここに言語を入力
         | 
| 91 | 
            -
             | 
| 117 | 
            +
            import pandas as pd
         | 
| 92 118 |  | 
| 119 | 
            +
            in_file = 'matome.xlsx'
         | 
| 120 | 
            +
            df = pd.read_excel(in_file)
         | 
| 121 | 
            +
            print(df)
         | 
| 93 122 |  | 
| 123 | 
            +
            print(df.groupby('担当者名2(アポインター)').sum()['金額'])
         | 
| 124 | 
            +
            ```
         | 
| 125 | 
            +
             | 
| 94 | 
            -
             | 
| 126 | 
            +
            ###➁の実行後のエラーです。
         | 
| 127 | 
            +
            ```ここに言語を入
         | 
| 128 | 
            +
            Empty DataFrame
         | 
| 129 | 
            +
            Columns: []
         | 
| 130 | 
            +
            Index: []
         | 
| 131 | 
            +
            Traceback (most recent call last):
         | 
| 132 | 
            +
              File "C:\Users\hannchou6\Desktop\新・給与関係\split_list.py", line 7, in <module>
         | 
| 133 | 
            +
                print(df.groupby('担当者名2(アポインター)').sum()['金額'])
         | 
| 134 | 
            +
              File "C:\Users\hannchou6\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\frame.py", line 6717, in groupby
         | 
| 135 | 
            +
                return DataFrameGroupBy(
         | 
| 136 | 
            +
              File "C:\Users\hannchou6\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\groupby\groupby.py", line 560, in __init__
         | 
| 137 | 
            +
                grouper, exclusions, obj = get_grouper(
         | 
| 138 | 
            +
              File "C:\Users\hannchou6\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\groupby\grouper.py", line 811, in get_grouper
         | 
| 139 | 
            +
                raise KeyError(gpr)
         | 
| 140 | 
            +
            KeyError: '担当者名2(アポインター)'
         | 
| 141 | 
            +
             | 
| 142 | 
            +
            ```
         | 
2
書式の改善 補足事項の追記
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -38,6 +38,8 @@ | |
| 38 38 |  | 
| 39 39 |  | 
| 40 40 | 
             
            ###各営業担当毎にデータを集計する為のコードです(教材の見よう見まねです。)
         | 
| 41 | 
            +
            ```ここに言語を入力
         | 
| 42 | 
            +
             | 
| 41 43 | 
             
            import openpyxl as excel, json
         | 
| 42 44 |  | 
| 43 45 | 
             
            in_file = 'matome.xlsx'
         | 
| @@ -82,7 +84,7 @@ | |
| 82 84 | 
             
                split_list()
         | 
| 83 85 |  | 
| 84 86 |  | 
| 85 | 
            -
             | 
| 87 | 
            +
             | 
| 86 88 | 
             
            ```
         | 
| 87 89 | 
             
            ###実行後のエラーです。
         | 
| 88 90 |  | 
1
回答者様からのご要望により直接データをのせた
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -15,9 +15,29 @@ | |
| 15 15 | 
             
            なお添付写真は、自分で作成したダミーの顧客管理データとうです。
         | 
| 16 16 | 
             
            ###自作の顧客管理シートです
         | 
| 17 17 | 
             
            
         | 
| 18 | 
            +
            ###エクセルからコピー致しました。行などがかなりずれてしまって見づらくて申し訳ありません。
         | 
| 19 | 
            +
              顧客名がa1,a2... です。
         | 
| 18 20 |  | 
| 21 | 
            +
            ```ここに言語を入力
         | 
| 22 | 
            +
            													
         | 
| 23 | 
            +
            顧客コード	日付	顧客名	担当者名(クローザー)	担当者名2(アポインター)	〒	住所1	工事内容	携帯電話	固定電話	メールアドレス	割引金額	金額	歩合率
         | 
| 24 | 
            +
            1	2021/6/7	a1	近藤	阿部		千葉県2-12-14	工事	090-xxxx-xxxx				¥2,200,000	12.0%
         | 
| 25 | 
            +
            2	2021/6/8	a2	近藤	阿部		神奈川県2-12-15	工事	91-xxxx-xxxx				¥4,560,000	12.0%
         | 
| 26 | 
            +
            3	2021/6/9	a3	近藤	阿部		北海道	工事	92-xxxx-xxxx				¥1,236,000	12.0%
         | 
| 27 | 
            +
            4	2021/6/10	a4	近藤	田中		沖縄県	工事	93-xxxx-xxxx				¥1,230,000	12.0%
         | 
| 28 | 
            +
            5	2021/6/11	a5	近藤	佐藤		沖縄県	工事	94-xxxx-xxxx				¥1,430,000	12.0%
         | 
| 29 | 
            +
            6	2021/6/12	a6	近藤	齋藤		沖縄県	工事	95-xxxx-xxxx				¥675,000	11.0%
         | 
| 30 | 
            +
            7	2021/6/13	a7	近藤	阿部		沖縄県	工事	96-xxxx-xxxx				¥324,000	10.0%
         | 
| 31 | 
            +
            8	2021/6/14	a8	近藤	阿部		沖縄県	工事	97-xxxx-xxxx				¥908,000	6.0%
         | 
| 32 | 
            +
            9	2021/6/15	a9	近藤	阿部		沖縄県	工事	98-xxxx-xxxx				¥564,000	9.0%
         | 
| 33 | 
            +
            10	2021/6/16	a10	近藤	阿部		沖縄県	工事	99-xxxx-xxxx				¥234,000	8.0%
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            ```
         | 
| 36 | 
            +
            													
         | 
| 37 | 
            +
             | 
| 38 | 
            +
             | 
| 39 | 
            +
             | 
| 19 40 | 
             
            ###各営業担当毎にデータを集計する為のコードです(教材の見よう見まねです。)
         | 
| 20 | 
            -
            ```
         | 
| 21 41 | 
             
            import openpyxl as excel, json
         | 
| 22 42 |  | 
| 23 43 | 
             
            in_file = 'matome.xlsx'
         | 
