판다스 집합 시 작은 구덩이 해결
문제 배경:
이전에 테스트를 잘 하던 프로그램이 갑자기 오류가 발생했는지,merge의 형식 오류가 발생했는지, 이 버그는 좀 이상하다.
문제 분석:
코드: 분류 후 평균값과 방차 계산
tmp_df = df[['object1', 'float']].groupby(['object1']).head(20).groupby(['object1'])['float'].agg(['mean', 'sum']).reset_index()
이 출력은 원래의 데이터 형식입니다. Object 하나,float64 하나입니다.
tmp_df = http_df[['object1', 'object2', 'float']].groupby(['object1', 'object2']).head(20).groupby(['object1', 'object2'])['float'].agg(['mean']).reset_index()
이 출력은object를float로 수정합니다.차이는 단지 하나의 특징을 이용하여 분류를 하는 것이고, 하나는 두 가지 특징을 이용하여 분류를 하는 것이다
문제의 원인(개인적인 추측, 참고용):
pandas가 분류를 할 때 이전에 각 열의 유형을 정했더라도 안에 데이터가 없을 때 한 열을 사용하여 분류를 할 때 열의 유형을 수정하지 않지만, 두 열을 동시에 사용하여 분류를 하면 열의 유형을 수정합니다.
그래서 뒤에 merge를 진행할 때 유형이 다르고 오류가 발생하는 거예요.
데이터 입력이 있을 때 이 오류는 발생하지 않고 데이터가 없을 때 발생한다.
보충:python 데이터 처리 - 데이터 차이 크기에 따라 분류 (분류)
최근 데이터 처리를 하는 과정에서 데이터 분류 문제에 부딪혔고python의 각종 편리한 라이브러리를 이용하여 데이터 차치의 크기로 분류하는 방법을 썼다.
장면 적용:
예를 들어list=[1,2,3,4,9,10,11,20,20,1,1.1,2.1100]과 같은 데이터 집합이 있는데 이를 수치의 크기에 따라 분류한다. 즉, 수치가 비교적 가까운 것을 분류하기 때문에 먼저 한도값을 설정하여 구분해야 한다.
구체적인 실현은 다음과 같다.
여기서 매개변수 입력Data_set은 입력된 데이터 집합으로 목록, 그룹, 시리즈, DataFrame이 될 수 있습니다.threshold는 데이터 크기로 분류된 문턱 값입니다.
출력 class_k는 데이터 분류 목록 집합, index_list는 데이터 분류에 대응하는 색인 집합입니다.
def threshold_cluster(Data_set,threshold):
#
stand_array=np.asarray(Data_set).ravel('C')
stand_Data=Series(stand_array)
index_list,class_k=[],[]
while stand_Data.any():
if len(stand_Data)==1:
index_list.append(list(stand_Data.index))
class_k.append(list(stand_Data))
stand_Data=stand_Data.drop(stand_Data.index)
else:
class_data_index=stand_Data.index[0]
class_data=stand_Data[class_data_index]
stand_Data=stand_Data.drop(class_data_index)
if (abs(stand_Data-class_data)<=threshold).any():
args_data=stand_Data[abs(stand_Data-class_data)<=threshold]
stand_Data=stand_Data.drop(args_data.index)
index_list.append([class_data_index]+list(args_data.index))
class_k.append([class_data]+list(args_data))
else:
index_list.append([class_data_index])
class_k.append([class_data])
return index_list,class_k
테스트는 다음과 같습니다.
import numpy as np
from pandas import Series,DataFrame
Data_set=[1,1.1,0.9,-5,2,100,99,-4.2,10000,0]
index_list,class_k=threshold_cluster(Data_set,5)
index_list
Out[10]: [[0, 1, 2, 4, 9], [3, 7], [5, 6], [8]]
class_k
Out[11]: [[1.0, 1.1, 0.9, 2.0, 0.0], [-5.0, -4.2], [100.0, 99.0], [10000.0]]
이상의 개인적인 경험으로 여러분께 참고가 되었으면 좋겠습니다. 또한 많은 응원 부탁드립니다.만약 잘못이 있거나 완전한 부분을 고려하지 않으신다면 아낌없이 가르침을 주시기 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Pandas】DatetimeIndex란? no.29안녕하세요, 마유미입니다. Pandas에 대한 기사를 시리즈로 작성하고 있습니다. 이번은 제29회의 기사가 됩니다. 에서 Pandas의 시간에 대한 모듈에 대해 씁니다. 이번 기사에서는, 「DatetimeIndex」...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.