시계열 데이터를 나타내는 팬더 데이터 프레임이 있습니다. DTDate (날짜 시간 날짜)라는 열과 line_code (이 열은 관찰 단위입니다. 공장에서 생산 라인이됩니다). 필자는 많은 데이터 열을 가지고 있지만이 질문을 위해서만 세 가지가 있다고 상상해보십시오.GroupBy 팬더를 사용하여 데이터 축소
근로자 - 생산 라인에있는 근로자의 수. item - 생산 라인에서 생산되는 품목의 이름입니다. 출력 - 생산 라인의 품목에 대한 출력량입니다.
일부 요일에는 하나의 항목 만 생성되며, 때로는 여러 항목을 생성합니다. 그러므로 때때로 DTDate/line_code마다 하나의 관찰이 있으며 때로는 여러 관측이 있습니다. DTDate/line_code 당 하나의 관찰로 데이터 세트를 축소해야합니다.
여기에 문지르 기가 있습니다. 우리는 어떻게 데이터를 집계하고 싶은지 아직 알지 못하며, 현재로서는 여러 집계 방법을 시도 할 수있는 구조를 구현해야합니다. 행에서 하나의 항목 만 생성하면 데이터 행을 그대로 보존하면됩니다. 라인이 주어진 DTDate에서 하나 이상의 항목을 생성 할 때 다음과 같이 관찰을 단일 관찰로 축소하려고합니다.
workers : 작업자 수가 DTDate/line_code 관측치 내에서 동일하면 단일 값 의 근로자는 붕괴 된 집합에 대한 포어를 운반한다. 작업자 수가 같지 않으면 DTDate/line_code 관측치 내의 모든 작업자 값을 포함하는 목록 개체를 만듭니다. 항목 : 항목의 목록 개체가 접힌 집합으로 전달됩니다. 출력 : 출력의 목록 개체가 접힌 집합으로 전달됩니다.
목록 항목이 축소 된 집합에 포함되어 있기 때문에 필자는 strucutre를 유연하게두고 각 열에 대해 다른 집계 방법을 실험 할 수있을만큼 충분히 유연하게두고 있습니다. 다음과 같이
는 SOFAR 나는 데이터를 그룹화 한 :
지금은 내가 뭘 걸려 라하는 것은 다음과 같은 것을 실현import pandas as pd
import numpy as np
from pandas import DataFrame
DF = DataFrame(mydata, columns = ['DTDate', 'line_code', \
'workers', 'item', 'output'])
DFGrouped = DF.groupby(['DTDate', 'line_code'])
: myfunc1이의 경우 모든 값을 평가합니다
DFAggregated = DFGrouped.agg({'DTDate': max(), 'line_code' : max(), \
'workers' : myfunc1, 'item' : myfunc2, \
'output' : myfunc2})
지정된 열의 그룹은 동 일하며 값이있는 경우 단일 값을 리턴하고 그렇지 않으면 각 값의 목록을 리턴합니다.
myfunc2는 지정된 열 내의 그룹에있는 모든 값의 목록을 반환합니다.
제 문제는 제가 그룹 인덱스/행을 반복하는 방법에 대해 분명히 알지 못하기 때문에 그 기능을 작성하는 방법을 모르겠다는 것입니다. grouby 등에 대한 python 문서를 읽었지만 매우 유용하지 않다. 나는 내가 시도한 것에 대한 더 많은 코드를 게시해야한다는 것을 알았지 만 여기에서 벗어나기가 어렵다. 모든 포인터 크게 감사하겠습니다.
def myfunc1(ColName):
if len(set([DFGroup[ColName][x] for x in DFGroup.index])) == 1:
return DFGroup[ColName].max()
else:
return [DFGroup[ColName][x] for x in DFGroup.index]
def myfunc2(ColName):
return [DFGroup[ColName][x] for x in DFGroup.index]
당신이 볼 수있는 난을 참조하는 방법을 잘 모르겠습니다 :
이 같은 것을보고 myfunc1 및 myfunc2로부터를Incidentall 내가 기대 (지금 설명 기능 코드를 제공하기 위해 확장) 그룹 지수 등
여기서 인수 x가 열의 정수인 경우 DF입니까? 고마워요. 도움이됩니다. 실제로 각 그룹 내의 인덱스를 반복 할 필요는 없습니다. 필요한 경우 어떻게합니까? 적용은 유용 할 수있는 것처럼 보이며, 그것은 마치 같은 방식으로 작동합니다. 나는 지금 볼 것이다. 고마워. –
@WoodyPride : 앞에서 말했듯이 함수에 대한 인수 (필자의 예에서는'x')는 열 데이터가 포함 된 pandas 시리즈입니다. Series를 반복 할 때처럼 반복 할 수 있습니다. – BrenBarn
, 감사합니다! –