Home [SeSAC]판다스, Seaborn, Matplotlib 라이브러리
Post
Cancel

[SeSAC]판다스, Seaborn, Matplotlib 라이브러리

19. 판다스 소개 및 데이터 불러오기

판다스란?

  • 파이썬에서 데이터분석을 할 때 가장 많이 쓰이는 라이브러리
  • 표 형태의 데이터를 다루는 다양한 기능을 제공
  • 데이터 가시화
  1. 엑셀, csv등 다양한 데이터 형식 지원
  2. 결측치 처리 기능
  3. 데이터 형태 바꾸기
  4. 데이터 삭제 및 추가
  5. 그룹화, 정렬, 결합
  6. 시계열 데이터
  7. 문자열 및 날짜/시간 지원

open() 함수

  • 쓰기
    1
    2
    3
    
    f = open('hello.txt', 'wt')
    f.write('hello')
    f.close()
    
  • 읽기
    1
    2
    3
    4
    
    f = open('hello.txt', 'rt')
    data = f.read()
    f.close()
    print(data) # hello
    
  • 추가
    1
    2
    3
    
    f = open('hello.txt', 'at')
    f.write('hello')
    f.close()
    

20. 시리즈와 데이터프레임 이해하기

표 형태의 데이터

  • 열: 시리즈
  • 표: 데이터프레임

  • 시리즈
    • 데이터프레임에서 각각의 열
    • 판다스의 pd.Series() 함수로 생성
  • 딕셔너리를 사용하여 시리즈 만들기
1
2
dic = {"a":1, "b":2, "c":3}
s = pd.Series(dic)
  • 리스트를 사용하여 시리즈 만들기
1
2
box = ['홍길동', '이순신', '아이유']
s = pd.Series(box, index=['', '', ''])
  • 시리즈 행 이름 확인
    1
    
    s.index
    
  • 시리즈 값 확인
    1
    
    s.values
    
  • 딕셔너리로 데이터프레임 만들기
    1
    2
    3
    4
    
    dic = {'이름':['홍길동', '이순신','아이유'],
        '성별':['남자', '남자', '여자'],
        "나이":[40,50,20]}
    pd.DataFrame(dic, index = ['A', 'B', 'C'], columns=['성별', '나이', '이름'])
    
  • 리스트로 데이터프레임 만들기
1
2
box = [['홍길동', '남자', 40], ['이순신', '남자', 50], ['아이유', '여자', 20]]
pd.DataFrame(box, columns=['이름', '성별', '나이'])
  • 데이터 프레임 열 이름, 행 이름 확인
    1
    2
    
    df.columns
    df.index
    

21. 판다스 통계 함수 맛보기

Groupby 함수 소개

  • 판다스에서 제공하는 데이터프레임을 집단별로 나누어주는 함수
  • 각 집단별로 통계값을 구할 때 유용하게 사용 가능
통계 함수설명
count누락값을 제외한 데이터 수
size누락값을 포한한 데이터 수
mean평균
std표준편차
min최소값
max최대값
sum전체 합
var분산
describe요약 통계량
first첫번째 행
last마지막 행
  • tsv 파일 불러올때
1
2
import pandas as pd
df = pd.read_csv('gapminder.tsv', sep='\t') # 기본값 sep=','에서 \t로 바꾼다
  • groupby(mean), 시각화
1
2
result = df.groupby('집단화하고싶은열이름')['보고싶은열이름'].mean() # 평균치
result.plot()

22. 시리즈와 데이터프레임 다루기

데이터프레임에서 열에 접근하기

1
2
df[]
df[[열1, 열2]]

데이터프레임에서 행, 열에 접근하기

  • loc: 이름으로 접근
  • iloc: 순서로 접근
1
2
3
4
5
loc[0]
iloc[0]

loc[[0. 10, 100, 1000]]
iloc[[0, 10, 100, 1000]]

데이터프레임에서 원하는 행만 추출하기

1
2
3
df[조건]
df[(조건1) & (조건2)]
df[(조건1) | (조건2)]

데이터프레임의 머리, 꼬리부분 추출

1
2
3
4
5
6
7
df.head()
df.head(n=10)
df.head(10)

df.tail()
df.tail(n=10)
df.tail(10)

데이터프레임 확인

1
2
3
4
df.shape # 모양 확인
df.columns # 열 이름 확인
df.dtypes # 열 자료형 확인
df.info() # 정보 확인

시리즈 통계 함수

1
2
3
4
5
6
s.mean()
s.std()
s.median()
s.describe()
s.max()
s.min()

시리즈 중복 데이터 삭제하기

1
2
s.drop_duplicates()
df.drop_duplicates()

시리즈 특정 값 바꾸기

1
s.replace(, 변경값)

시리즈 랜덤 샘플 추출

1
s.sample(n)

정렬하기

1
2
3
4
5
s.sort_values()
s.sort_values(ascending=False)

s.sort_index()
s.sort_index(ascending=False)

시리즈 프레임화

1
s.to_frame()

시간 데이터 변환

1
pd.to_datetime() # 문자열로 된 날짜 데이터를 시간 데이터로 변환

24. 데이터 시각화가 필요한 이유

  • 만약 평균, 표준편차 등 수치만으로 봤을 떄, 완전 똑같은 4개의 데이터 집단이 있다면, 4개의 데이터 집단은 모두 같은 데이터 집단일까?

대표적인 파이썬 데이터 시각화 라이브러리

  • matplotlib
  • seaborn
  • pandas
1
2
3
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

subplot

1
2
3
4
ax1 = fig.add_subplot(2, 2, 1)
ax2 = fig.add_subplot(2, 2, 2)
ax3 = fig.add_subplot(2, 2, 3)
ax4 = fig.add_subplot(2, 2, 4)

25. matplotlib 라이브러리

  • 그래프 라이브러리: matplotlib, seaborn, pandas
1
2
3
4
5
6
7
8
import matplotlib.pyplot as plt
fig = plot.figure()
ax1 = fig.add_subplot(1, 1, 1)

ax1.그림함수(매개변수) # 그래프 그리기
ax1.set_title(제목) # 제목 지정
ax1.set_xlabel(x축 이름) # x축 이름 지정
ax1.set_ylabel(y축 이름) # y축 이름 지정

histogram

1
2
3
4
5
fig = plt.figure() # 그림을 그리기 위한 도화지를 한장 준비해서 fig 변수에 할당
ax1 = fig.add_subplot(1,1,1) # 1행 1열에 1번쨰 자리
ax1.hist(tips['total_bill'], bins=10)
ax1.hist(tips['total_bill'], bins=20)
ax1.hist(tips['total_bill'], bins=30)

Scatter-plot

1
2
3
4
5
6
7
8
9
10
11
fig = plt.figure() # 그림을 그리기 위한 도화지를 한장 준비해서 fig 변수에 할당

ax1 = fig.add_subplot(1,1,1) # 1행 1열에 1번쨰 자리

ax1.scatter(tips['total_bill'], tips['tip'])

ax1.set_xlabel("TOTAL BILL")

ax1.set_ylabel("TIP")

ax1.set_title("SCATTER")

  • 색 추가
1
2
3
4
5
6
7
8
9
10
11
fig = plt.figure() # 그림을 그리기 위한 도화지를 한장 준비해서 fig 변수에 할당

ax1 = fig.add_subplot(1,1,1) # 1행 1열에 1번쨰 자리

ax1.scatter(tips['total_bill'], tips['tip'], c=tips['size']) # 색 추가

ax1.set_xlabel("TOTAL BILL")

ax1.set_ylabel("TIP")

ax1.set_title("SCATTER")

  • 사이즈 추가
1
2
3
4
5
6
7
8
9
10
11
fig = plt.figure() # 그림을 그리기 위한 도화지를 한장 준비해서 fig 변수에 할당

ax1 = fig.add_subplot(1,1,1) # 1행 1열에 1번쨰 자리

ax1.scatter(tips['total_bill'], tips['tip'], c=tips['size'], s=tips['size']*30) # 사이즈 추가

ax1.set_xlabel("TOTAL BILL")

ax1.set_ylabel("TIP")

ax1.set_title("SCATTER")

boxplot

1
2
3
4
5
6
7
fig = plt.figure() # 그림을 그리기 위한 도화지를 한장 준비해서 fig 변수에 할당
ax1 = fig.add_subplot(1,1,1) # 1행 1열에 1번쨰 자리

male = tips[tips['sex']=='Male']
female = tips[tips['sex']=='Female']

ax1.boxplot([male['total_bill'], female['total_bill']])

26. seaborn 라이브러리 활용 그래프

  • seaborn과 matplotlib는 연동이 가능하다
1
2
3
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
ax1 = sns.histplot(tips['total_bill'])

히스토그램

1
sns.histplot(데이터, bins=막대기개수)

밀도 함수 그래프

1
2
sns.kdeplot(데이터)
sns.kdeplot(데이터1, 데이터2)

특정 값 개수 그래프

1
sns.countplot(데이터)

산점도

1
sns.lmplot(x='total_bill', y = 'tip', data=tips)

산점도 + 히스토그램

1
sns.jointplot(x='total_bill', y='tip', data=tips)

평균 막대 그래프

1
sns.barplot(x='time', y='total_bill', data=tips)

상자 그래프

1
sns.boxplot(x='time', y='total_bill', data = tips)

바이올린 그래프

1
sns.violinplot(x='time', y='total_bill', data=tips)

관계 그래프

1
sns.pairplot(tips)

단변량/이변량 그래프

  • 단변량 / 일변량 그래프: 한개의 특성에 대한 표시
  • 이변량 그래프 : 두개의 특성에 대한 상관관계를 나타냄

다변량 그래프 그리기

매개변수 hue: 색상 추가

다변량 그래프 그리기

매개변수 col

집단 별로 그래프 그리기

FacedGrid

집단별로 그래프 그리는 함수

기타

sns.set_stule(배경): 그래프 배경 설정

dartgrid, whitegrid, dart, white, ticks 등

27. pandas 라이브러리를 활용해서 그래프 그리기

  • 아주 간단한 그래프만 가능

히스토그램

1
2
3
fig = plt.figure
ax = fig.add_subplot(1,1,1)
ax = tips['total_bill'].plot.hist()

1
2
3
fig = plt.figure
ax = fig.add_subplot(1,1,1)
ax = tips[['total_bill', 'tip']].plot.hist(alpha=0.5, bins=20) # alpha: 투명도

밀도 함수 그래프

1
ax = tips['tip'].plot.kde()

산점도

1
ax = tips.plot.scatter(x='total_bill', y='tip')

육각형 모양 산점도

1
ax = tips.plot.hexbin(x='total_bill', y='tip', gridsize=10)

원형 그림

1
ax = df.plot.pie(y='mass')

This post is licensed under CC BY 4.0 by the author.

[SeSAC]파이썬 강의

[SeSAC]판다스 데이터분석