본문 바로가기
IT/Python 데이터 분석 활용

[Python] Pandas[판다스] 활용하기(2)

by Tony Jung 2024. 5. 30.
반응형

Pandas(2)

위와 같이 엑셀 (또는 csv 등 파일)에 데이터가 있을 경우 해당 데이터를 불러와서 Pandas에 넣는 작업이 필요합니다. 

import pandas as pd
import openpyxl #엑셀 호출 모듈
#엑셀파일 불러오기
df=pd.read_excel('c:\Point.xlsx')

C 드라이 안에  Point.xlsx 파일이 있다고 가정한 예시이며 활용할 파일이 여러분들의 PC에 있다면 해당 경로를 입력하시면 됩니다. 엑셀을 호출하기 위해서는 openpyxl 모듈을 설치하여야 합니다. 터미널에서 pip install openpyxl을 이용하여 설치를 하시면 됩니다.

Pandas로 가져온 데이를 확인하는 방법은 info() 함수로 아래와 같이 호출하면 테이터 프레임의 크기, 타입, 결측치 등의 정보를 확인 할 수 있습니다.

#데이터 프레임 정보 
df.info()

아래와 같이 결과값을 확인 할 수 있답니다. 

 

데이터프레임의 일부 내용을 확인하기 위해서는 df.head() 함수를 통해 확인 할 수 있습니다. head() 함수는 기본적으로 상위 5개의 데이터를 가져오며 head()함수안에 인자값 입력을 통해 원하는 수의 데이터를 확인 할 수 있습니다. (ex:df.head(2))

#데이터 프레임의 일부 데이터 확인(1)
print(df.head())

#결과값 
#	Name	Point	Point1
#0	Tony	100	80
#1	Lena	90	70
#2	Helen	70	60

#데이터 프레임의 일부 데이터 확인(2)
print(df.head(2))

#결과값
#	Name	Point	Point1
#0	Tony	100	80
#1	Lena	90	70

데이터 정렬하기

Pandas로 가져온 데이터에 대하여 특정한 열 기준으로 데이터를 정렬하여 사용할 수 있습니다. sort_values 함수의 ascedning=False옵션으로 특정열을 내림차순으로 정렬 가능하며 해당 옵션을 별도 지정하지 않으면 올림차순으로 정렬이 됩니다. 

# 내림차순

df.sort_values('Point1', ascending=False)
# 결과값
#    Name  Point  Point1   City
#0   Tony    100      80  Seoul
#1   Lena     90      70  Seoul
#2  Helen     70      60  Busan


# 오름차순

df.sort_values('Point1')
# 결과값
#	Name	Point	Point1	City
#2	Helen	70	60	Busan
#1	Lena	90	70	Seoul
#0	Tony	100	80	Seoul

 

데이터 필터링

데이터를 조회하거나, 분류, 검색할 때 조건에 맞게 데이터를  필터링 하여 사용할 수 있습니다.

# 데이터 조건 필터링
# Point가 90 이상인 데이터 필터 

df[df['Point'] >=90 ]


#논리연산자 이용
#Point 가 100 이고, Point1 이 80 이상인 데이터 

df[(df['Point']==100 ) & (df['Point1']>=80)]

#Point 가 80이상이거나 Point1이 70 이상인 데이터 

df[(df['Point']>=80 ) | (df['Point1']>=70)]

만약 원하는 특정값 (아마 검색에 활용되겠지요)이 포함된 데이터만 선택할 경우에는 isin()함수를 사용합니다. 

#isin() 함수 예제

df[df['Name'].isin(['Lena','Tony'])]

#결과값

	Name	Point	Point1
0	Tony	100	80
1	Lena	90	70
반응형

 

데이터 그룹화

데이터 그룹화를 하기위해서는 groupby()함수를 사용할 수 있습니다. groupby('열 이름')이렇게 사용하시면 됩니다. 지금껏 사용하던 예제 데이터에는 그룹화할 조건의 열이 없기때문에 city열을 먼저 추가한 후 테스트 해볼게요. 

# 그룹화할 열 추가 

df['City']=['Seoul','Seoul','Busan']
 
print(df)

#결과값
    Name  Point  Point1   City
0   Tony    100      80  Seoul
1   Lena     90      70  Seoul
2  Helen     70      60  Busan

# City 그룹화 
df.groupby('City')

그룹화된 데이터에 대하여 집계합수를 이용하여 원하는 값을 추출할 수 있습니다. 

#City로 그룹화하여 Point1의 값을 활용
# count() : 그룹화한 데이터의 개수를 구하는 함수
print(df.groupby('City')['Point1'].count())

#결과값
#City
#Busan    1
#Seoul    2
#Name: Point1, dtype: int64

# sum(): 데이터의 합을 구하는 함수 
print(df.groupby('City')['Point1'].sum())

#결과값
#City
#Busan     60
#Seoul    150
#Name: Point1, dtype: int64

#mean() : 데이터의 평균을 구하는 함수 
print(df.groupby('City')['Point1'].mean())
 
#결과값 
#City
#Busan    60.0
#Seoul    75.0
#Name: Point1, dtype: float64


#median() : 데이터의 중앙값을 구하는 함수
print(df.groupby('City')['Point1'].median())

#결과값
#City
#Busan    60.0
#Seoul    75.0
#Name: Point1, dtype: float64

#min(): 데이터의 최소값을 구하는 함수 
print(df.groupby('City')['Point1'].min())

#결과값
#City
#Busan    60
#Seoul    70
#Name: Point1, dtype: int64


#max(): 데이터의 최대값을 구하는 함수 
print(df.groupby('City')['Point1'].max())

#결과값
#City
#Busan    60
#Seoul    80
#Name: Point1, dtype: int64


#std(): 표준편차를 구하는 함수 
print(df.groupby('City')['Point1'].std())

#결과값
#City
#Busan         NaN
#Seoul    7.071068
#Name: Point1, dtype: float64


#var(): 데이터의 분산값을 구하는 함수 
print(df.groupby('City')['Point1'].var())

#결과값
#City
#Busan     NaN
#Seoul    50.0

자..여기까지 Pandas를 이용한 데이터의  기본적인 활용법에 대하여 알아봤습니다. 다음에는  전처리한 데이터를 이용하여 그래프로 표현하고 분석하는 방법에 대하여 포스팅 하도록하겠습니다~ 

 

 

반응형

댓글