MINERVA/Python 2022. 11. 12. 04:38
반응형

행(row)과 열(column) 형태인 datafram을 결합하기 위해서 concat() 함수를 사용합니다.

사용 방법은 매우 직관적이며 아래의 샘플코드를 한번 보시면 고등학생때 수업시간에 배운 집합을 생각하시면 매우 간단합니다.

 

1. 예제1

SampleDf1 = {'A': ['A1', 'A2', 'A3', 'A4'],
             'B': ['B1', 'B2', 'B3', 'B4'],
             'C': ['C1', 'C2', 'C3', 'C4'],
             }

df1 = pd.DataFrame(SampleDf1)
print(df1)


SampleDf2 = {'A': ['A1', 'A2', 'A3', 'A4'],
             'B': ['B1', 'B2', 'B3', 'B4'],
             'C': ['C1', 'C2', 'C3', 'C4'],
             }
df2 = pd.DataFrame(SampleDf2)
print(df2)

(실행결과)

    A   B   C
0  A1  B1  C1
1  A2  B2  C2
2  A3  B3  C3
3  A4  B4  C4
    A   B   C
0  A1  B1  C1
1  A2  B2  C2
2  A3  B3  C3
3  A4  B4  C4

unionDf = pd.concat([df1, df2])

(실행결과)

    A   B   C
0  A1  B1  C1
1  A2  B2  C2
2  A3  B3  C3
3  A4  B4  C4
0  A1  B1  C1
1  A2  B2  C2
2  A3  B3  C3
3  A4  B4  C4

 

unionDf = pd.concat([df1, df2], ignore_index=True)

- 인덱스 새롭게 설정함

(실행결과)    

A   B   C
0  A1  B1  C1
1  A2  B2  C2
2  A3  B3  C3
3  A4  B4  C4
4  A1  B1  C1
5  A2  B2  C2
6  A3  B3  C3
7  A4  B4  C4

unionDf = pd.concat([df1, df2],axis=1) 
print(unionDf)

- 옆으로 데이타를 연결

(실행결과)

    A   B   C   A   B   C
0  A1  B1  C1  A1  B1  C1
1  A2  B2  C2  A2  B2  C2
2  A3  B3  C3  A3  B3  C3
3  A4  B4  C4  A4  B4  C4

 

unionDf = pd.concat([df1,df2],ignore_index=True).drop_duplicates(keep='first')
print(unionDf)

# 중복행 제거: drop_duplicates() 사용

(실행결과)

    A   B   C
0  A1  B1  C1
1  A2  B2  C2
2  A3  B3  C3
3  A4  B4  C4

unionDf = pd.concat([df1,df2],ignore_index=True).drop_duplicates(keep='last')
print(unionDf)

(실행결과)

    A   B   C
4  A1  B1  C1
5  A2  B2  C2
6  A3  B3  C3
7  A4  B4  C4

 

2. 예제2

SampleDf1 = {'A': ['A1', 'A2', 'A3', 'A4'],
             'B': ['B1', 'B2', 'B3', 'B4'],
             'C': ['C1', 'C2', 'C3', 'C4'],
             }

df1 = pd.DataFrame(SampleDf1)
print(df1)

SampleDf2 = {'C': ['C1', 'C2', 'C3', 'C4'],
             'D': ['D1', 'D2', 'D3', 'D4'],
             'E': ['E1', 'E2', 'E3', 'E4'],
             'F': ['F1', 'F2', 'F3', 'F4'],
             }
df2 = pd.DataFrame(SampleDf2)
print(df2)

unionDf = pd.concat([df1, df2])
print(unionDf)

(실행결과)

    A   B   C
0  A1  B1  C1
1  A2  B2  C2
2  A3  B3  C3
3  A4  B4  C4
    C   D   E   F
0  C1  D1  E1  F1
1  C2  D2  E2  F2
2  C3  D3  E3  F3
3  C4  D4  E4  F4
     A    B   C    D    E    F
0   A1   B1  C1  NaN  NaN  NaN
1   A2   B2  C2  NaN  NaN  NaN
2   A3   B3  C3  NaN  NaN  NaN
3   A4   B4  C4  NaN  NaN  NaN
0  NaN  NaN  C1   D1   E1   F1
1  NaN  NaN  C2   D2   E2   F2
2  NaN  NaN  C3   D3   E3   F3
3  NaN  NaN  C4   D4   E4   F4

unionDf = pd.concat([df1, df2], ignore_index=True)
print(unionDf)

(실행결과)

     A    B   C    D    E    F
0   A1   B1  C1  NaN  NaN  NaN
1   A2   B2  C2  NaN  NaN  NaN
2   A3   B3  C3  NaN  NaN  NaN
3   A4   B4  C4  NaN  NaN  NaN
4  NaN  NaN  C1   D1   E1   F1
5  NaN  NaN  C2   D2   E2   F2
6  NaN  NaN  C3   D3   E3   F3
7  NaN  NaN  C4   D4   E4   F4

unionDf = pd.concat([df1, df2],axis=1)
print(unionDf)

(실행결과)

     A     B   C    C     D    E   F
0  A1  B1  C1  C1  D1  E1  F1
1  A2  B2  C2  C2  D2  E2  F2
2  A3  B3  C3  C3  D3  E3  F3
3  A4  B4  C4  C4  D4  E4  F4

 

3.정리

세부적인 설명보다는 샘플코드와 실행결과를 보면 이해가 쉽게 될것으로 생각되어 코드와 실행결과를 남겼습니다.

 

반응형
posted by choiwonwoo
:
MINERVA/Python 2022. 11. 7. 16:42
반응형

Dataframe 객체를 추출(?)이후, 정보 흐름 파악을 위해 컬럼 또는 로우간 누적 합/곱을 합니다.

 

이때 사용하는 함수로 cumsum / cumprod

가 있습니다.


위에서부터 아래로 한줄씩 덧셈/곱셈을 누적합니다.

 

1. 예제 데이타 프레임

 

df = pd.DataFrame({'A': [1, 2, 3],
                   'B': [4, 5, 6],
                   'C': [7, 8, 9]}, index=['1', '2', '3'])

print(df)

[결과]

   A  B  C
1  1  4  7
2  2  5  8
3  3  6  9

 

2. 누적합 예제

############################
# 행누적합
print()
print(df.cumsum(axis=1))

# 열누적합
print()
print(df.cumsum(axis=0))

[결과]

   A  B   C
1  1  5  12
2  2  7  15
3  3  9  18

   A   B   C
1  1   4   7
2  3   9  15
3  6  15  24

 

3. 누적곱 예제

############################
# 행누적곱
print()
print(df.cumprod(axis=1))

# 열누적곱
print()
print(df.cumprod(axis=0))

[결과]

   A   B    C
1  1   4   28
2  2  10   80
3  3  18  162

   A    B    C
1  1    4    7
2  2   20   56
3  6  120  504

 

4. 정리

개발 언어중에, 위의 기능은 python dataframe에만 있는것으로 알고 있다.

C/C++, Java등에서 해당 기능을 구현할려면 루핑을 돌려서 처리하였는데, 역시 Python은 데이타 분석을 위한 다양한 기능이 기본으로 제공되는 것 같다.

반응형
posted by choiwonwoo
:
MINERVA/ETC 2022. 10. 15. 12:02
반응형

참여했던 프로젝트를 완료하고 시간이 지난후에 어떤 기능이 않된다고 연락을 받을때 마다 순간 순간 멍해진다.

 

오늘도 프로그램이 뜨지 않는다고 해서 연락을 받고 들여다 보니 쩝....

 

그래도 간략히 정리해두자.

 

[에러 메시지 1]
[에러 메시지 2]

해당 화면이 뜨는 원인은 분명하다. kiwoom에서 패포하는 ocx 파일의 버젼이 갱신, 즉 업데이트되었기 때문입니다.

그래서, 업데이트를 해주어야 하는데, 현재 프로젝트에서 직접 kiwoom에서 패포하는 ocx파일을 가져올수 없습니다.

 

KOA StudioSA

그래서, kiwoom에서 관리 배포하는 KOA StudioSA를 로긴을 정상적으로 진행하는 방식으로 OCX를 업데이트 하면 해결됩니다.

 

참 쉽죠~~

반응형
posted by choiwonwoo
: