質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

231閲覧

python pivotテーブルの使用について

F91_

総合スコア16

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2022/05/04 06:23

python pivotのcolumnによるカテゴリーが上手くいかない

python pivotにてexcelデータを集計していますが、columnで指定している文字(工程CD)以外も項目とされてしまっている。

実現したいこと

数字(製造外径)の範囲内での文字個数を知りたい。
(例)
0~1はGが1000個、RGが500個
1~2はGが500個、RGが1000個

※最終的にはわかりやすく可視化までしたい

発生している問題(excelデータ)

カラムはGとRGのみにしたい。また、文字化けもしている。
イメージ説明

該当のソースコード

python

1import pandas as pd 2input=pd.read_excel('C:/Users/yokoc/Desktop/RG追加調査.xlsx') 3input["工程外径"]=pd.cut(input["工程外径"],[0,1,2,3,4,5,6,7,8,9,10,11,12,20,30]) 4a=input.pivot_table(index="工程外径",columns="工程CD",aggfunc='count') 5 6a.to_csv('C:/Users/yokoc/Desktop/g.csv')

元データ(excelデータ)

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

aggfuncsize に変更します。文字コードに関しては to_csv メソッドに encoding='utf-8' を付けるとよいかもしれません。

python

1import pandas as pd 2 3pd.set_option('display.unicode.east_asian_width', True) 4 5df = pd.DataFrame({ 6 '製番': ['3210622', '12112029', '32203020', '11912019A', '12002035B'], 7 '品目CD': ['1A200', '1A507', '1A200', '1A010', '1A010'], 8 '工程外径': [2, 5, 8, 12, 25], 9 '工程CD': ['G', 'RG', 'G', 'RG', 'G'], 10 '作業開始日時': ['2021/05/06', '2021/11/25', '2022/04/07', '2020/01/06', '2020/01/27'], 11 '年': [2021, 2021, 2022, 2020, 2020], 12 '月': [5, 11, 4, 1, 1], 13}) 14 15df['工程外径'] = pd.cut(df['工程外径'], [*range(13), 20, 30]) 16dfx = df.pivot_table(index='工程外径', columns='工程CD', aggfunc='size') 17print(dfx) 18 19# 20工程CD G RG 21工程外径 22(0, 1] 0 0 23(1, 2] 1 0 24(2, 3] 0 0 25(3, 4] 0 0 26(4, 5] 0 1 27(5, 6] 0 0 28(6, 7] 0 0 29(7, 8] 1 0 30(8, 9] 0 0 31(9, 10] 0 0 32(10, 11] 0 0 33(11, 12] 0 1 34(12, 20] 0 0 35(20, 30] 1 0

投稿2022/05/04 07:04

編集2022/05/04 07:09
melian

総合スコア19618

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

F91_

2022/05/05 07:15

ありがとうございます!aggfunc sizeにして上手くいきました。書き込みはutf-8_sigを追加しました。
F91_

2022/05/05 07:49

工程外径のpandas cutですが、以下のように区分したいです。 0~0.999 1~1.999 2~2.999 3~3.999 現在調べていますが、わからなければ再度質問します。
melian

2022/05/05 07:52

cut に right=False を指定してみて下さい。 df['工程外径'] = pd.cut(df['工程外径'], [*range(13), 20, 30], right=False)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問