안녕하세요 오늘은 데이터 분석을 위한 pandas 사용법에 대해 소개해보겠습니다

 

pandas는 데이터 분석에서 결과도출, EDA, 분석 등에 활용됩니다

 

 

 

1. 설치방법

pip install pandas

 

 

 

 

2. 자료구조

- Series : 1차원 배열

- DataFrame : 2차원 배열

 

 

 

 

3. Series

import pandas as pd

tmp = pd.Series([1,2,3,4,5])

pd.Series() 안에 배열을 넣어서 Series로 만들 수 있으며 이때 인덱스(순서?)가 생성됩니다

 

 

 

4. DataFrame

import pandas as pd

cols = list('ABCD')

indexs = pd.date_r('20240130', periods=7)

출력
DatetimeIndex(['2024-01-30', '2024-01-31', '2024-02-01', '2024-02-02',
               '2024-02-03', '2024-02-04', '2024-02-05'],
              dtype='datetime64[ns]', freq='D')

다음과 같이 선택일자부터 7일동안의 데이터를 임의 생성합니다

 

values = np.random.randn( len( indexs ), len(cols) )
df = pd.DataFrame( values, indexs, cols )
df

이후 indexs와 cols의 개수만큼 7,4 배열에 랜덤값을 만들어준 후 DataFrame으로 만들면 표로 시각화됩니다

 

pandas DataFrame으로 시각화한 표로 데이터 분석에 자주 사용되는 데이터 분석을 위한 확인 방법입니다

 

 

 

5. read_csv

csv_path = '/content/drive/MyDrive/res/data.csv'
df = pd.read_csv( csv_path )

csv 파일을 DataFrame으로 만드는 방법으로 인공지능 학습 데이터의 구조로 사용됩니다

 

 

 

 

6.df.head, df.tail

df.head()
df.tail()

DataFrame의 앞에서 5개의 데이터, 뒤에서 5개의 데이터를 뽑아오는 방법입니다

 

 

 

7. df.info

df.info()

빅데이터서 데이터의 구조를 쉽게 확인하는 방법으로 컬럼명, 데이터의 개수, 타입 확인을 쉽게 할수있습니다

 

 

 

8. sort_values

df.sort_values(by='age', ascending=Faslse)

age 나이를 기준으로 정렬하는 방법으로 내림차순, 오름차순 등으로 정렬 가능합니다

 

 

 

 

9. .columns, .values

df.columns
df.values

columns는 컬럼들을 나열하여 컬럼명을 확인하기 편합니다

values는 해당 값을 확인할 수 있으며 인덱스나 컬럼의 값을 통해 검색하는 방법처럼 사용됩니다

 

 

 

 

 

10. 인덱싱

10-1 컬럼 인덱싱

df.[['age', 'id']]

df의 컬럼이 여러개일때에 age, id 컬럼값만 인덱싱 하는 방법입니다

 

 

10-2 인덱스 인덱싱

df[1:10:2]

numpy를 공부하고 오셧다면 바로 이해할수 있습니다 1번부터 10번까지 2단위로 인덱싱합니다

 

 

10-3 인덱스 교체

data_size = df.shape

cus_indexs = pd.data_range('20240130',periods=data_size)

df.index = cus_indexs

df의 shape을 통해 날짜를 shape만큼 만들어서 index를 날짜로 변경하는 방법입니다

 

 

 

 

 

11 loc

df.loc['2024-05-05':'2024-10-10', 'age']

날짜로 바꾼 인덱스를 통해 loc.[날짜,컬럼] 방식으로 데이터를 추출합니다

 

위 코드는 5월5일부터 10월10일까지의 데이터를 나이만 가져오게 됩니다

 

데이터 분석으로 예시를 들면 5월5일 부터 10월10일 까지 유저들의 나이대를 알수있습니다

 

 

 

 

12 iloc

df.iloc[1:3, 1:3]
df.iloc[[4,5,2,6], [5,1,4,2]]

iloc를 사용한 슬라이싱(?) 방법으로

첫번째는 1번부터 3번전까지의 인덱스를 1번부터 3번전까지의 컬럼만 출력한다 입니다

 

두번째는 numpy에서도 비슷하게 사용했던 비연속적인 데이터 추출입니다 4,5,2,6 인덱스에서 5,1,4,2 컬럼을 가져옵니다

 

 

 

 

13.블리언 인덱싱

df2.is_deleted == 0

참, 거짓의 데이터에서 사용되며 0, True인 데이터만을 인덱싱 하는 방법입니다

 

예시로 loc와 함께 사용한다면 구매여부 True, 물건을 구입한 사람 중 5월 ~ 10월 사이의 유저 나이 처럼 응용할수있습니다

 

 

 

 

14. drop

df.drop(['age'], axis=1)

데이터에서 age 컬럼을 제거합니다

컬럼이 많을때에는 인덱싱 하기에 번거로울 수 있어서 사용됩니다

 

 

 

15. groupby

df.groupby(['purchase', 'gender']).count()

purchase 는 1,0 으로 대분류로 구분해주고 gender에 따라 중분류를 진행할 수있습니다

 

구매 여부에따른 여자와 남자의 수 를 확인할수있습니다

 

 

 

 

16. 컬럼추가

df['gender'] = data['gender']

df에 gender 컬럼이 없다는 가정하에 작성하는 코드로 data에 있는 젠더 값을 가져오는 코드입니다 다른방법으로는 Series를 컬럼으로 추가할 수 있습니다

이때 값의 수가 같아야 하며 다를경우 다른 컬럼들이 None으로 추가됩니다

 

 

 

17. merge

left_df  = pd.DataFrame({
    'key':list('1234'),
    'A':list('ABCD'),
    'B':list('EFGH'),
})
right_df = pd.DataFrame({
    'key':list('0123'), 
    'C':list('가나다라'),
    'D':list('WXYZ'),
})

pd.merge( left_df, right_df, on='key' )

차원이 같은 두 데이터를 병합하는 방법으로 key값을 기준으로 병합되며 A,B,C,D 컬럼이 생기게 됩니다

 

pd.merge( left_df, right_df, on='key', how='left' )

(3,4) 배열과 (4,3)의 배열을 merge 하게되면 Nan으로 채우게 됩니다 이는 16. 컬럼추가와 같습니다

Nan이 되면 결측치가 발생하게 되며 이는 제거하거나 값을 추가해서 사용할 수 있습니다

 

 

 

 

18 조건 인덱싱

df = df[df['age'] >= 20]

실무에서 가장 많이 사용되는 인덱싱 방법인데 공부할때는 기본적인 사용법만 학습하다 보니 내용이 따로 없어서 하나 추가해보았습니다 조건에 따른 인덱싱 방법으로

예시는 20살 이상이 데이터만 가져온다입니다

 

결측치를 그래프로 시각화하여 결측치를 제거하거나 필요한 데이터 조건을 설정하는데 많이 사용됩니다

+ Recent posts