CS/Data Science

[CS] 파이썬으로 시작하는 데이터 사이언스 (3)

칸타탓 2020. 11. 8. 22:42

판다스 치트시트 활용하기

 

- pandas

- dataframe

- series

- sort

- drop

- groupby

- pivot table

- plot


- Pandas 사용하기

수식으로 계산할 수 있고 시각화도 할 수 있는 데이터 분석도구이다. 엑셀로는 힘든 대용량의 데이터를 분석할 수 있다.

import pandas as pd로 라이브러리를 불러온 후 사용한다.

 

- Pandas 따라해보기
pandas.pydata.org/pandas-docs/version/1.0.0/getting_started/10min.html

pandas.pydata.org/Pandas_Cheat_Sheet.pdf

 

- 관련 문법 익히기

1) DataFrame : 2차원의 자료구조

2개 이상의 프레임을 가져올 때는 데이터 프레임 형태로 가져와야 한다.

df = pd.DataFrame({
  "a" : [4, 5, 6],
  "b" : [7, 8, 9],
  "c" : [10, 11, 12]
},index = [1, 2, 3])
# 모든 값 출력
df

a, b, c 컬럼을 가진 데이터 프레임 생성

 

2) Series : 1차원의 자료구조

df["a"]를 입력하면 a 컬럼에 있는 4, 5, 6의 값이 출력된다.

Series 형태가 아닌 Data Frame 형태로 출력하고 싶은 경우 df[["a"]]로 입력한다.

 

* 차이 (1차원과 2차원 구조)

 

3) Subset (일부 값만 불러오기)

# df["a", "b"]
# 두 개 이상의 값을 불러올 때 Series 형태로 불러올 경우 키값 오류 발생

df[["a", "b"]]
# DataFrame 형태로 불러와야 한다.

# df의 a의 컬럼 값 중 4보다 큰 값만 가져오겠다
# df["a"] > 4는 Boolean 값
df[df["a"] > 4]

 

4) Summarize Data : 빈도수

Categorical한 값의 빈도수를 구하기

# a 컬럼에서 6은 1번, 5는 1번, 4는 1번 존재
df["a"].value_counts()

 

5) Reshaping

# a 컬럼을 정렬하기
df["a"].sort_values()
1    4
2    5
3    6
Name: a, dtype: int64

# a 값을 기준으로 정렬하기
df.sort_values("a")
	a	b	c
1	4	7	10
2	5	8	11
3	6	9	12

# 역순으로 정렬하기
df.sort_values("a", ascending=False)
	a	b	c
3	6	9	12
2	5	8	11
1	4	7	10
# 특정 칼럼 버리기
# axis : 0이면 행을 기준으로 삭제, 1은 열을 기준으로 삭제
# df.drop(["c"], axis=1)만 수행하는 것이 아니라 df에 다시 담아주어야 한다.
df = df.drop(["c"], axis=1)

	a	b
1	4	7
2	5	8
3	6	9

 

6) Group Data

# 컬럼의 평균값 구하기 (mean)
# a 컬럼값을 Groupby하여 b의 컬럼값 평균값 구하기
# 만약 a에 4가 2번 존재하고 각각 6, 8이 들어있다면 7이 평균값으로 b에 들어가게 됨
df.groupby(["a"])["b"].mean()

df.groupby(["a"])["b"].agg(["mean", "count", "sum"])
	mean	count	sum
a			
4	7	1	7
5	8	1	8
6	9	1	9

# 데이터 요약
df.groupby(["a"])["b"].describe()
	count	mean	std	min	25%	50%	75%	max
a								
4	1.0	7.0	NaN	7.0	7.0	7.0	7.0	7.0
5	1.0	8.0	NaN	8.0	8.0	8.0	8.0	8.0
6	1.0	9.0	NaN	9.0	9.0	9.0	9.0	9.0

a
4    7
5    8
6    9
Name: b, dtype: int64
# 4의 평균, 8의 평균, 9의 평균

pd.pivot_table(df, index="a")
	b	c
a		
4	7	10
5	8	11
6	9	12

# 더한 값을 구하고자 하는 경우
pd.pivot_table(df, index="a", values="b", aggfunc="sum")
	b
a	
4	7
5	8
6	9

 

7) Plotting : 시각화(기본적으로 선 그래프)

# 꺾은선 그래프
df.plot()

# 막대 그래프
df.plot.bar()

# 밀도함수
df.plot.density()