초봉5센티미터

TIL 6. Pandas 기초와 Seaborn 본문

교육/멋쟁이사자처럼 AI School 7기

TIL 6. Pandas 기초와 Seaborn

삶은돼지고기 2022. 9. 22. 17:48
728x90

1. 판다스에서 컬럼 가져오기 

- 컬럼 가져오기: df[ [ ] ]

- 행(index) 가져오기: df.loc[[인덱스 값!]]

- df.set_index(컬럼명).loc["인덱스값"]: df.set_index()

 

- `loc`: 행을 기준으로 데이터프레임을 가져옴, 라벨이나 boolen array로
- `iloc`: 인덱스를 기준으로 데이터프레임을 가져옴

str.contains ->특정 값을 찾는것

df["약품명"].str.contains("vita") #하면 vita 들어간것만 True
df[df["약품명"].str.contains("vita")] # 이렇게 df에 넣어주면 True인것만 출력

df["약품명"].str.upper() # 모든문자 대문자로 출력
df["약품명"].str.upper() # 모든문자 소문자로 출력

# 특정 금액 이상의 가격에 해당되는 데이터프레임을 가져오기
df[df["가격"]>3000]

#정렬하기 sort_values 사용
df.sort_values(by="가격")
df.sort_values(by="가격",ascending= False) # 내림차순으로 정렬

#2개 이상의 변수로 정렬
df.sort_values(by=["가격", "약품명"], ascending=[False, True]) #[]로 묶어줘야함

#저장하고 불러오기
# to_csv 를 통해 csv 파일로 저장
df.to_csv("drug.csv") # drug.csv로 저장

# 저장된 csv 파일을 읽기
pd.read_csv("drug.csv")
-> 이렇게 저장하면 다운로드 파일 엑셀에서 글자가 깨지는 증상

encoding = "cp949" 해줘야함
df.to_csv("drug.csv",index=False, encoding = "cp949" ) #index=True 이면 unnamed라는 인덱스가 생성됨 False해야 없어짐
pd.read_csv("drug.csv", encoding = "cp949" )


relplot : 두 가지 변수의 관계를 나타내기 위해 주로 사용
displot : 변수 하나 혹은 두개의 값 분포를 나타내기 위해 주로 사용
catplot : 범주형 변수와 연속형 변수간의 관계를 나타내기 위해 주로 사용

 

Seabon 시각화: 

sns.countplot() : 이산값을 나타내는 그래프 (각 범주에 속하는 데이터의 개수를 막대그래프로 나타냄)

- ex) 1학년 1~6반, classroom별 인원 파악하기 그래프 등 에 쓸 수 있음 - 그래프 축 변경 가능 - (data=df, x=”dataset”) ==> x축을 기준으로 그래프 그려짐 // y=“dataset”하면 y축 기준으로 그래프 그려짐

 

 sns.barplot() :

기본값 : 평균 

검은 막대(ci = confidence interval) = 신뢰구간 - sns.barplot(data=df, x=“dataset”, y=“x”, ci=“sd”) ==> sd는 표준편차 - n_boot : 표본을 몇개할건지 (디폴트 : 1000) - 큰 데이터로 시각화할 때, ci 넣으면 시간 오래걸림(표본추출한다는게 ~ 출구조사 느낌) -> ci 빼는거 추천! - 대표값만 나타내기 때문에 자세한 표현 어려움 ——> boxplot 이용(분포를 더 잘 확인할 수 있음)

 

 sns.boxplot() - 이상치가 있을 경우 박스표시

- 히스토그램과 비교 시 단점 : Robust하다. 중앙값은 잘 변하지않음. 값이 변해도 사분위수가 정해져있으면 변하지않는다. 

 

 sns.violinplot - 히스토그램의 밀도를 나타낸 것을 마주보고 그린 값 - kdeplot으로 그린 그래프를 x축을 기준으로 마주보고 그린 그래프임 - 어디에 많이 몰려있냐에 따라 그래프 모양이 달라짐

 

df.hist() : 히스토그램 - 정해진 계급에 변량이 포함되어 있는 정도를 표로 나타낸 것, 어떤 기준에 의한 수의 분포 - bins로 막대 몇개로 그려줄 것인지 설정 가능(디폴트값 : 10), 계급의 수를 나타냄

 

 sns.displot() : 데이터셋에 대한 히스토그램 확인가능 

hue - 색상을 나타낸다. 그룹바이와 비슷, 레이블(카테고리)를 구별할 수 있는 기능

- KDE parameter - 커널 밀도 추정(kernal density estimation) 그래프로, 히스토그램이 절대량(count)을 표현한다면 kdeplotdms 상대량(비율)을 시각화 히스토그램과 마찬가지로 한개 혹은 두개의 변수에 대한 분포를 그릴 수 있음

- 밀도를 추정한 다음 이를 마주보고 그린 것이 violinplot이다

. (부드러운 그림4를 데칼코마니로 찍어낸게 violinplot) - 즉, 밀도 추정 그래프이다. hue값 지원안하는 경우도 있음

 

 sns.scatterplot() - 수치변수간의 분포를 확인하고자 할 때 사용 / 범주형 그래프에도 사용되기도 함(but 추천X) - ex) sns.scatterplot(data=df, x="x", y="y", hue="dataset")

 

 sns.regplot() - scatterplot에선 hue 지원하지만 여기선 X => 데이터별 표현하기 위해선 Implot 쓰면 됨 - ex) sns.regplot(data=df, x="x", y="y")

 

 sns.lmplot() - displot처럼 데이터별 분포 확인 가능 - hue 지원 - 그래프에서 반투명 영역은 신뢰구간을 의미

'교육 > 멋쟁이사자처럼 AI School 7기' 카테고리의 다른 글

TIL 8. EDA (2)  (0) 2022.09.27
TIL 7. EDA (1)  (0) 2022.09.27
TIL 5. Python (2)  (1) 2022.09.20
TIL 4. Python (1)  (1) 2022.09.20
TIL 3. [심화] 같이 푸는 Python  (0) 2022.09.16
Comments