import pandas as pd
class DataFrameBasic:
def data_frame_basic(self):
print("판다스 데이터 프레임 활용 예제\n")
print("--------------데이터 프레임 생성--------------")
data = {
'이름': ['홍길동', '김철수', '이영희'],
'나이': [25, 30, 22],
'성별': ['남', '남', '여']
}
# 데이터 프레임 생성 방법
df = pd.DataFrame(data)
print(f"데이터 프레임 생성:\n{df}")
if __name__ == '__main__':
dfb = DataFrameBasic()
dfb.data_frame_basic()
'''
출력
--------------데이터 프레임 생성--------------
데이터 프레임 생성:
이름 나이 성별
0 홍길동 25 남
1 김철수 30 남
2 이영희 22 여
'''
import pandas as pd: pandas 라이브러리를 pd라는 이름으로 불러옵니다.
data = {...}: 딕셔너리 형태로 데이터를 생성합니다. 딕셔너리의 키는 열 이름이 되고, 값은 각 열에 들어갈 데이터 목록입니다. 예를 들어, '이름': ['홍길동', '김철수', '이영희']는 이름 열에 들어갈 값을 지정한 것입니다.
위 코드처럼 작성하면 이름, 나이, 성별이라는 세 개의 열을 가진 데이터 프레임을 생성할 수 있습니다.
import pandas as pd
class DataFrameBasic:
def data_frame_basic(self):
print("판다스 데이터 프레임 활용 예제\n")
print("--------------데이터 프레임 생성--------------")
data = {
'이름': ['홍길동', '김철수', '이영희'],
'나이': [25, 30, 22],
'성별': ['남', '남', '여']
}
# 데이터 프레임 생성 방법
df = pd.DataFrame(data)
print("\n--------------데이터 선택 및 필터링--------------")
# 특정 열 선택
print(f"특정 열 선택:\n{df['이름']}")
# 여러 열 선택
print(f"\n여러 열 선택:\n{df[['이름', '나이']]}")
# 조건에 맞는 행 필터링
print(f"\n조건에 맞는 행 필터링:\n{df[df['나이'] > 25]}")
if __name__ == '__main__':
dfb = DataFrameBasic()
dfb.data_frame_basic()
'''
출력
--------------데이터 선택 및 필터링--------------
특정 열 선택:
0 홍길동
1 김철수
2 이영희
Name: 이름, dtype: object
여러 열 선택:
이름 나이
0 홍길동 25
1 김철수 30
2 이영희 22
조건에 맞는 행 필터링:
이름 나이 성별
1 김철수 30 남
'''
위 코드에서 이름 열을 선택하고, 이름과 나이 열을 동시에 선택하며, 나이가 25보다 큰 행을 필터링하는 예시를 보여주고 있습니다.
import pandas as pd
class DataFrameBasic:
def data_frame_basic(self):
print("판다스 데이터 프레임 활용 예제\n")
print("--------------데이터 프레임 생성--------------")
data = {
'이름': ['홍길동', '김철수', '이영희'],
'나이': [25, 30, 22],
'성별': ['남', '남', '여']
}
# 데이터 프레임 생성 방법
df = pd.DataFrame(data)
print("\n--------------데이터 추가 및 삭제--------------")
# 데이터 추가
df['국가'] = ['한국', '한국', '한국']
print(f"데이터 추가:\n{df}")
# 열 삭제
df = df.drop('국가', axis=1)
print(f"\n열 삭제:\n{df}")
if __name__ == '__main__':
dfb = DataFrameBasic()
dfb.data_frame_basic()
'''
출력
--------------데이터 추가 및 삭제--------------
데이터 추가:
이름 나이 성별 국가
0 홍길동 25 남 한국
1 김철수 30 남 한국
2 이영희 22 여 한국
열 삭제:
이름 나이 성별
0 홍길동 25 남
1 김철수 30 남
2 이영희 22 여
'''
import pandas as pd
class DataFrameBasic:
def data_frame_basic(self):
print("판다스 데이터 프레임 활용 예제\n")
print("--------------데이터 프레임 생성--------------")
data = {
'이름': ['홍길동', '김철수', '이영희'],
'나이': [25, 30, 22],
'성별': ['남', '남', '여']
}
# 데이터 프레임 생성 방법
df = pd.DataFrame(data)
print("\n--------------데이터 정렬--------------")
# 데이터 프레임 오름차순 정렬
print(f"나이 기준 오름차순 정렬:\n{df.sort_values('나이')}")
# 데이터 프레임 내림차순 정렬
print(f"\n나이 기준 내림차순 정렬:\n{df.sort_values('나이', ascending=False)}")
if __name__ == '__main__':
dfb = DataFrameBasic()
dfb.data_frame_basic()
'''
출력
--------------데이터 정렬--------------
나이 기준 오름차순 정렬:
이름 나이 성별
2 이영희 22 여
0 홍길동 25 남
1 김철수 30 남
나이 기준 내림차순 정렬:
이름 나이 성별
1 김철수 30 남
0 홍길동 25 남
2 이영희 22 여
'''
import pandas as pd
import matplotlib.pyplot as plt
class DataFrameDeepening:
def data_frame_deepening(self):
print("판다스 데이터 프레임 활용 예제 심화")
print("\n--------------데이터 프레임을 다른 형식으로 변환--------------")
# 데이터 프레임을 CSV 파일로 저장
df.to_csv(r'C:\WorkSpace\python-basic\data\employee_data.csv', index=False)
print("데이터 프레임을 CSV 파일로 변환 후 python-baisc의 data 패키지에 저장했습니다.")
# 데이터 프레임을 Excel 파일로 저장
df.to_excel(r'C:\WorkSpace\python-basic\data\employee_data.xlsx', index=False)
print("데이터 프레임을 Excel 파일로 변환 후 python-baisc의 data 패키지에 저장했습니다.")
if __name__ == '__main__':
data_frame_deepening = DataFrameDeepening()
data_frame_deepening.data_frame_deepening()
5. 데이터의 피벗 테이블 생성
피벗 테이블은 데이터를 특정 기준으로 그룹화하고, 그 그룹에 대해 집계 작업을 수행할 수 있게 도와줍니다.
pivot_table() 함수는 aggfunc 파라미터를 사용하여 집계 함수를 지정할 수 있습니다.
import pandas as pd
import matplotlib.pyplot as plt
class DataFrameDeepening:
def data_frame_deepening(self):
print("판다스 데이터 프레임 활용 예제 심화")
print("\n--------------데이터 프레임으로 피벗 테이블 생성--------------")
pivot_table = df.pivot_table(values='나이', index='부서', aggfunc='mean')
# 부서별로 나이의 평균을 구하는 피벗 테이블 생성
print(f"부서별 나이 평균 피벗 테이블:\n{pivot_table}")
if __name__ == '__main__':
data_frame_deepening = DataFrameDeepening()
data_frame_deepening.data_frame_deepening()
'''
출력
--------------데이터 프레임으로 피벗 테이블 생성--------------
부서별 나이 평균 피벗 테이블:
나이
부서
HR 29.666667
IT 25.000000
'''
6. 데이터 시각화
matplotlib 라이브러리를 사용하여 부서별 평균 급여를 시각화 해봤습니다.
아래 예제는 부서별 평균 급여를 막대 그래프로 표시하였으며, rc() 함수로 한글이 깨지지 않도록 설정을 추가했습니다.
import pandas as pd
class DataFrameBasic:
def data_frame_basic(self):
print("판다스 데이터 프레임 활용 예제\n")
print("--------------데이터 프레임 생성--------------")
data = {
'이름': ['홍길동', '김철수', '이영희'],
'나이': [25, 30, 22],
'성별': ['남', '남', '여']
}
# 데이터 프레임 생성 방법
df = pd.DataFrame(data)
print(f"데이터 프레임 생성:\n{df}")
print("\n--------------데이터 프레임 기본 정보 확인--------------")
# 데이터 프레임 정보 출력
print(f"df.info():\n{df.info()}")
# 데이터 프레임의 통계 요약 출력
print(f"\ndf.describe():\n{df.describe()}")
print("\n--------------데이터 선택 및 필터링--------------")
# 특정 열 선택
print(f"특정 열 선택:\n{df['이름']}")
# 여러 열 선택
print(f"\n여러 열 선택:\n{df[['이름', '나이']]}")
# 조건에 맞는 행 필터링
print(f"\n조건에 맞는 행 필터링:\n{df[df['나이'] > 25]}")
print("\n--------------데이터 추가 및 삭제--------------")
# 데이터 추가
df['국가'] = ['한국', '한국', '한국']
print(f"데이터 추가:\n{df}")
# 열 삭제
df = df.drop('국가', axis=1)
print(f"\n열 삭제:\n{df}")
print("\n--------------데이터 정렬--------------")
# 데이터 프레임 오름차순 정렬
print(f"나이 기준 오름차순 정렬:\n{df.sort_values('나이')}")
# 데이터 프레임 내림차순 정렬
print(f"\n나이 기준 내림차순 정렬:\n{df.sort_values('나이', ascending=False)}")
print("\n--------------데이터 통계 분석--------------")
# 나이 열의 평균
print(f"나이 열의 평균: {df['나이'].mean()}")
# 나이 열의 최대값
print(f"나이 열의 최대값: {df['나이'].max()}")
# 나이 열의 최소값
print(f"나이 열의 최소값: {df['나이'].min()}")
if __name__ == '__main__':
dfb = DataFrameBasic()
dfb.data_frame_basic()
'''
출력
판다스 데이터 프레임 활용 예제
--------------데이터 프레임 생성--------------
데이터 프레임 생성:
이름 나이 성별
0 홍길동 25 남
1 김철수 30 남
2 이영희 22 여
--------------데이터 프레임 기본 정보 확인--------------
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 이름 3 non-null object
1 나이 3 non-null int64
2 성별 3 non-null object
dtypes: int64(1), object(2)
memory usage: 200.0+ bytes
df.info():
None
df.describe():
나이
count 3.000000
mean 25.666667
std 4.041452
min 22.000000
25% 23.500000
50% 25.000000
75% 27.500000
max 30.000000
--------------데이터 선택 및 필터링--------------
특정 열 선택:
0 홍길동
1 김철수
2 이영희
Name: 이름, dtype: object
여러 열 선택:
이름 나이
0 홍길동 25
1 김철수 30
2 이영희 22
조건에 맞는 행 필터링:
이름 나이 성별
1 김철수 30 남
--------------데이터 추가 및 삭제--------------
데이터 추가:
이름 나이 성별 국가
0 홍길동 25 남 한국
1 김철수 30 남 한국
2 이영희 22 여 한국
열 삭제:
이름 나이 성별
0 홍길동 25 남
1 김철수 30 남
2 이영희 22 여
--------------데이터 정렬--------------
나이 기준 오름차순 정렬:
이름 나이 성별
2 이영희 22 여
0 홍길동 25 남
1 김철수 30 남
나이 기준 내림차순 정렬:
이름 나이 성별
1 김철수 30 남
0 홍길동 25 남
2 이영희 22 여
--------------데이터 통계 분석--------------
나이 열의 평균: 25.666666666666668
나이 열의 최대값: 30
나이 열의 최소값: 22
'''