SPSS Modeler의 필드 순서 노드를 Python으로 다시 씁니다.

SPSS Modeler에서 열 순서를 변경하는 것은 필드 순서 노드입니다.
이것을 Python pandas로 다시 작성해 보겠습니다.

0. 원본 데이터



다음 시계열 센서 데이터를 사용하여 수행합니다.

■COND2n.csv
Time:가동시간
Power:전력
Temperature:온도
Pressure: 압력
Uptime: 시작 시간
Status:상태 코드
Outcome:오류 코드



1m. 필드 순서 변경 Modeler 버전



COND2n.csv의 열 순서
Time,Power,Temperature,Pressure,Uptime,Status,Outcome
순서에서
Time,Uptime,Power,Temperature,Pressure,Outcome,Status
로 변경합니다.



필드 순서로 Time, Uptime을 선택하고 위에서 2개로 설정합니다.
다음으로 Outcome, Status를 아래에서 2개로 설정합니다.

포인트는 "-----[다른 필드]------"라는 항목이 있으며 다른 필드는 원래 테이블의 열 순서를 유지하면서 자동으로 배치됩니다.



Power, Temperature, Pressure와 같은 같은 종류의 데이터를 세트로 취급하고 싶은 경우에 자주 사용합니다. 이번에는 3열 밖에 없습니다만, 대량으로 열이 있을 때에는, 모든 열을 1열, 1열 지정하지 않아도 되므로 매우 편리합니다. 또한 센서에 대한 열이 추가된 경우에도 수정할 필요가 없습니다.

1p. 필드 순서 변경 pandas 버전



방법은 여러 가지가 있습니다.
첫 번째 간단한 방법은 변경 후 전체 열 목록을 제공하는 방법입니다.
#列を入れ替える1:すべての列を記載する
df1_1=df1[['Time','Uptime','Power','Temperature','Pressure','Outcome','Status']]
df1_1



그러나, 이 방법은 열이 많이 있는 경우는 힘든 방법이 되고, 가독성도 내려갑니다. Modeler와 같이 일부 열을 집합으로 취급하는 방법을 고려합니다.

두 번째 방법은 dataframe을 세 부분으로 나누는 방법입니다.
포인트는 df1.loc[:,'Power':'Pressure']로 'Power','Temperature','Pressure'의 3열분의 dataframe을 만들고 있는 것입니다.
#列を入れ替える2:3つのDFを作って連結する
df1_2=pd.concat([df1[['Time','Uptime']],
                 df1.loc[:,'Power':'Pressure'],
                 df1[['Outcome','Status']]], axis=1, join='inner')
df1_2

그러나 이 방법은 중간적으로 dataframe을 많이 만들고 있고, 데이터의 건수가 많을 때에는 상당히 비효율이라고 생각합니다.

세 번째 방법은
columns.tolist()로 열 이름 목록을 만든 다음
collist[collist.index('Power'):collist.index('Pressure')+1]에서 "'Power','Temperature','Pressure'"열 이름 목록을 만들고 있습니다.
#列を入れ替える3:列のリストオブジェクトを作る
collist=df1.columns.tolist()

df1_3=df1[['Time', 'Uptime']+
          collist[collist.index('Power'):collist.index('Pressure')+1]+
          ['Outcome','Status']]
df1_3

두 번째 방법보다이 방법이 가볍습니다. 다만, 가독성은 그다지 높지 않은 프로그램입니다.

네 번째 방법은 두 번째와 세 번째 방법을 결합한 것입니다.
df1.loc[0:0,'Power':'Pressure']에서 'Power',1 레코드만의 'Temperature','Pressure'만의 dataframe을 만들고 columns.tolist()에서 열 목록만 꺼내고 있습니다.
#列を入れ替える4:切り出したDFから列のリストオブジェクトを作る
collist= df1.loc[0:0,'Power':'Pressure'].columns.tolist()

df1_3=df1[['Time', 'Uptime']+
          collist+
          ['Outcome','Status']]
df1_3

아직 가독성이 높다고는 말할 수 없지만, 두 번째 방법보다 가볍고, 세 번째 방법보다는 읽을 수 있을까 생각합니다.
  • 참고
  • pandas.DataFrame, Series의 중복 행을 추출/삭제 | note.nkmk.me
  • htps : //에서. 응 kmk. 메 / py 텐 - 팬더 s - 즈 p ぃ か d d 로 p ぃ ぃ か s /
  • pandas.DataFrame.append — pandas 1.1.4 documentation
  • htps // 팬더 s. py였다. 오 rg / 팬더 s-도 cs / s 타 b ぇ / 레후 렌세 / 아피 / 팬더 s. 다타 F라메. 아펜 d. HTML # 팬더 s. 다타 F라메. 아펜 d


  • 2. 샘플



    샘플을 아래에 넣었다.

    스트림
    htps : // 기주 b. 이 m / hkwd / 200611도 ぇ r2Py 쵸 / 라 w / 뭐 r / 후에 ld 레오 r에서 r / 후에 ld 레오 r에서 r. str
    노트북
    htps : // 기주 b. 이 m / hkwd / 200611도 데 r2Py 텐 / b ぉ b / 뭐 r / 후에 ld 레오 r에서 r / 후에 ld 레오 r에서 r. 이 pyn b

    데이터
    htps : // 등 w. Giteubuse r 콘텐트 t. 이 m/hkwd/200611도 ぇr2Py정/마s r/다타/곤D2응. CSV

    ■ 테스트 환경
    Modeler 18.2.2
    Windows 10 64비트
    파이썬 3.7.9
    pandas 1.0.5

    3. 참고 정보



    필드 순서 노드
    htps //w w. 이 bm. 이 m / 쏘 rt / k의 w ぇd 곁들여 r / 그럼 / s3 등 7_18. r에서 r_오오 rゔぃ에w. HTML

    좋은 웹페이지 즐겨찾기