Python Pandas 마스터하기 81~90

이번 포스팅은 Python pandas 마스터하기 위한 아홉 번째 포스팅입니다( python pandas 마스터하기 81~90 ).

이번 포스팅 내용을 학습하기 전에 이전 포스팅(Python pandas 마스터하기 1 ~10, Python pandas 마스터하기 11 ~20, Python pandas 마스터하기 21 ~30, Python pandas 마스터하기 31 ~40, Python pandas 마스터하기 41 ~50, Python pandas 마스터하기 51 ~60, Python pandas 마스터하기 61 ~70, Python pandas 마스터하기 71 ~80) 내용을 먼저 학습하시기 바랍니다.

간단한 예제 코드와 설명을 포함한 100가지 Python pandas 코드 중 No 81 ~ 90개에 대해서 살펴보겠습니다.

81. 데이터프레임에서 열의 자기상관 계산하기

실습을 위해 아래 데이터를 D드라이브에 다운로드 하시기 바랍니다.

import pandas as pd

titanicData = pd.read_csv("D:/titanic.csv")

# 자기상관 계산하기
columnName = 'Fare'
autocorrelation = titanicData[columnName].autocorr()

# 자기상관 출력하기
print(columnName,"열의 자기상관 : ", autocorrelation)
------------------------------------------------------------------------
Fare 열의 자기상관 :  -0.011468971806148325

Pandas에서 제공하는 autocorr() 메서드를 사용하여 해당 열의 자기상관을 계산할 수 있습니다.


82. 정방향 또는 역방향 채우기를 사용하여 데이터프레임에서 결측치 채우기

import pandas as pd

# 정방향 채우기를 사용한 결측치 채우기
forwardFilledDf = titanicData.fillna(method = 'ffill')

# 역방향 채우기를 사용한 결측치 채우기
backwardFilledDf = titanicData.fillna(method = 'bfill')

# 결과값 확인하기 
print("원래 데이터프레임:")
titanicData.head()
-----------------------------------------------------------------------------------------------------------------------------------------------------------------

    PassengerId	Survived	Pclass	Name	                                            Sex	    Age	    SibSp	Parch	Ticket	        Fare	Cabin	Embarked
0	1	        0	        3	    Braund, Mr. Owen Harris	                            male	22.0	1	    0	    A/5 21171	    7.2500	NaN	    S
1	2	        1	        1	    Cumings, Mrs. John Bradley (Florence Briggs Th...	female	38.0	1	    0	    PC 17599	    71.2833	C85	    C
2	3	        1	        3	    Heikkinen, Miss. Laina	                            female	26.0	0	    0	    STON/O2.3101282	7.9250	NaN	    S
3	4	        1	        1	    Futrelle, Mrs. Jacques Heath (Lily May Peel)	    female	35.0	1	    0	    113803	        53.1000	C123	S
4	5	        0	        3	    Allen, Mr. William Henry	                        male	35.0	0	    0	    373450	        8.0500	NaN	    S
print("\n정방향 결측치 채우기 결과 데이터프레임:")
forwardFilledDf.head()
-----------------------------------------------------------------------------------------------------------------------------------------------------------------

    PassengerId	Survived	Pclass	Name	                                            Sex	    Age	    SibSp	Parch	Ticket	        Fare	Cabin	Embarked
0	1	        0	        3	    Braund, Mr. Owen Harris	                            male	22.0	1	    0	    A/5 21171	    7.2500	NaN	    S
1	2	        1	        1	    Cumings, Mrs. John Bradley (Florence Briggs Th...	female	38.0	1	    0	    PC 17599	    71.2833	C85	    C
2	3	        1	        3	    Heikkinen, Miss. Laina	                            female	26.0	0	    0	    STON/O2.3101282	7.9250	C85	    S
3	4	        1	        1	    Futrelle, Mrs. Jacques Heath (Lily May Peel)	    female	35.0	1	    0	    113803	        53.1000	C123	S
4	5	        0	        3	    Allen, Mr. William Henry	                        male	35.0	0	    0	    373450	        8.0500	C123	S

누락된 값을 채우기 위해 fillna() 메소드를 사용합니다. 정방향 채우기를 사용하여 누락된 값을 채우려면 인수 method = ‘ffill’을 fillna() 메서드에 전달해야 합니다. 그러면 마지막으로 관찰된 값이 앞으로 전파됩니다(Cabin 칼럼을 확인해 보세요).

print("\n역방향 결측치 채우기 결과 데이터프레임:")
backwardFilledDf.head()
-----------------------------------------------------------------------------------------------------------------------------------------------------------------

    PassengerId	Survived	Pclass	Name	                                            Sex	    Age	    SibSp	Parch	Ticket	        Fare	Cabin	Embarked
0	1	        0	        3	    Braund, Mr. Owen Harris	                            male	22.0	1	    0	    A/5 21171	    7.2500	C85	    S
1	2	        1	        1	    Cumings, Mrs. John Bradley (Florence Briggs Th...	female	38.0	1	    0	    PC 17599	    71.2833	C85	    C
2	3	        1	        3	    Heikkinen, Miss. Laina	                            female	26.0	0	    0	    STON/O2.3101282	7.9250	C123	S
3	4	        1	        1	    Futrelle, Mrs. Jacques Heath (Lily May Peel)	    female	35.0	1	    0	    113803	        53.1000	C123	S
4	5	        0	        3	    Allen, Mr. William Henry	                        male	35.0	0	    0	    373450	        8.0500	E46     S

후방 채우기를 사용하여 누락된 값을 채우려면 인수 method = ‘bfill’을 fillna() 메서드에 전달해야 합니다. 그러면 다음으로 관찰된 값이 뒤로 전파됩니다(Cabin 칼럼을 확인해 보세요).


83. 데이터프레임에 있는 열의 누적 평균 계산

import pandas as pd

# 누적 평균을 계산하고자 하는 열 이름 정의
columnName = 'Fare'

# 누적 평균 계산
cumulativeMean = titanicData[columnName].cumsum() / (titanicData.index + 1)
titanicData['cumulativeMean'] = cumulativeMean

# 누적 평균값 확인
titanicData[['Fare','cumulativeMean']]
----------------------------------------------
    Fare	cumulativeMean
0	7.2500	7.250000
1	71.2833	39.266650
2	7.9250	28.819433
3	53.1000	34.889575
4	8.0500	29.521660
...	...	...
886	13.0000	32.246617
887	30.0000	32.244087
888	23.4500	32.234195
889	30.0000	32.231685
890	7.7500	32.204208

891 rows × 2 columns

누적 평균을 계산하려면 cumsum() 메서드를 사용하여 열 값의 누적 합계를 계산해야 합니다. 그런 다음 누적 합계를 index + 1로 나누어 누적 평균을 계산할 수 있습니다.

다음으로 titanicData[‘cumulativeMean’] = cumulativeMean을 사용하여 누적 평균을 데이터프레임에 ‘cumulativeMean’이라는 새 열로 추가합니다.


84. 데이터프레임에 있는 열의 누적 분산 계산

import pandas as pd

# 누적 분산을 계산하고자 하는 열 이름 정의
columnName = 'Fare'

# 누적 분산 계산
cumulativeVariance = titanicData[columnName].expanding().var()
titanicData['cumulativeVariance'] = cumulativeVariance

# 누적 분산 계산 확인하기 
titanicData[['Fare','cumulativeVariance']]
-------------------------------------------------------------------
	Fare	cumulativeVariance
0	7.2500	NaN
1	71.2833	2050.131754
2	7.9250	1352.498885
3	53.1000	1049.052403
4	8.0500	930.861860
...	...	...
886	13.0000	2479.811327
887	30.0000	2477.021282
888	23.4500	2474.318836
889	30.0000	2471.541184
890	7.7500	2469.436846

891 rows × 2 columns

누적 분산을 계산하려면 Expand() 함수를 사용하여 확장 창을 계산해야 합니다. 그런 다음 var() 메서드를 확장 창에 적용하여 분산을 계산합니다.


85. 데이터프레임에 있는 열의 누적 표준 편차 계산

import pandas as pd

# 누적 표준편차를 계산하고자 하는 열 이름 정의
columnName = 'Fare'

# 누적 표준편차 계산 
cumulativeStd = titanicData[columnName].expanding().std()
titanicData['cumulativeStd'] = cumulativeStd

# 누적 분산 계산 확인하기 
titanicData[['Fare','cumulativeStd']]
--------------------------------------------------------------
	Fare	cumulativeStd
0	7.2500	NaN
1	71.2833	45.278381
2	7.9250	36.776336
3	53.1000	32.389078
4	8.0500	30.510029
...	...	...
886	13.0000	49.797704
887	30.0000	49.769682
888	23.4500	49.742525
889	30.0000	49.714597
890	7.7500	49.693429

891 rows × 2 columns

누적 표준 편차를 계산하려면 Expand() 함수를 사용하여 확장 창을 계산해야 합니다. 그런 다음 확장 창에 std() 메서드를 적용하여 표준 편차를 계산합니다.


86. 데이터프레임의 연속 열 사이의 백분율 변화 계산

import pandas as pd

def calculate_percentage_change(df):
    """
    데이터 프레임에서 연속 열 사이의 백분율 변화 계산

    인수:
    - df: 데이터프레임
        The input DataFrame.

    결과값:
    - 데이터프레임
        연속 열 사이의 백분율 변화를 계산한 칼럼을 포함하는 새로운 데이터프레임
    """
    return df.pct_change(axis=1) * 100

# 위에서 정의한 함수 호출
percentage_change_df = calculate_percentage_change(titanicData[['Age','Fare']])

# 새로운 데이터프레임 확인
percentage_change_df
-----------------------------------------------------------------------------------
	Age	Fare
0	NaN	-67.045455
1	NaN	87.587632
2	NaN	-69.519231
3	NaN	51.714286
4	NaN	-77.000000
...	...	...
886	NaN	-51.851852
887	NaN	57.894737
888	NaN	NaN
889	NaN	15.384615
890	NaN	-75.781250
891 rows × 2 columns

Pandas 라이브러리에서 제공하는 pct_change() 함수를 사용하여 데이터프레임의 연속 열 사이의 백분율 변화를 계산합니다.


87. 데이터프레임의 두 열 사이의 백분율 차이 계산

import pandas as pd


percentage_difference_series = ((titanicData['Fare'] - titanicData['Age']) / titanicData['Age']) * 100
percentage_difference_series
--------------------------------
0     -67.045455
1      87.587632
2     -69.519231
3      51.714286
4     -77.000000
         ...    
886   -51.851852
887    57.894737
888          NaN
889    15.384615
890   -75.781250
Length: 891, dtype: float64

위 코드는 아래 공식을 사용하여 데이터프레임에 있는 두 열 간의 백분율 차이를 계산합니다.
((column2 – column1) / column1) * 100


88. Pandas 데이터프레임을 사용한 Line Plot

import pandas as pd

titanicData.sort_values('Age').plot(x = 'Age', y = 'Fare', kind = 'line')

이 코드는 ‘Age’ 열을 x축 값으로, ‘Fare’ 열을 y축 값으로 사용하여 선 그래프를 만듭니다.


89. Pandas 데이터프레임을 사용한 막대 그래프

import pandas as pd


titanicData.groupby('Pclass')[['Fare']].mean().reset_index().plot(x = 'Pclass', y = 'Fare', kind = 'bar')

이 코드는 titanicData 의 ‘Pclass’ 열을 그룹으로 ‘Pclass’ 범주별 평균 ‘Fare’을 산출한 후에(titanicData.groupby(‘Pclass’)[[‘Fare’]].mean().reset_index()) 막대 그래프를 생성하는 코드입니다.


90. Pandas 데이터프레임을 사용한 히스토그램

import pandas as pd

titanicData.plot(y = 'Fare', kind = 'hist')

이 코드는 ‘Fare’ 열의 값을 사용하여 히스토그램을 생성하는 코드입니다.

이번 포스팅에서는 Python Pandas 마스터하기 위한 아홉 번째 시간을 가졌습니다( python pandas 마스터하기 81~90 ).
다음 포스팅은 Python Pandas 마스터하기 마지막 포스팅을 작성하겠습니다.
(Python Pandas 마스터하기 91~100 바로가기)

감사합니다!!

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다