일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 모두의 연구소 # 오준석의생존코딩# 오름캠프
- 모두연구소
- 오준석의 생존코딩
- ㅇ
- Tag #패스트캠퍼스 #내일배움카드 #국비지원 #K디지털기초역량훈련 #바이트디그리 #자바인강
- 오준석의생존코딩
- 오름캠프플러터
- 생존코딩
- 패스트 캠퍼스
- 오름캠프
- 모두의연구소
- 모두의연구소 오준석생존코딩 오름캠프
- 오존석의 생존코딩
- #패스트캠퍼스 #내일배움카드 #국비지원 #K디지털기초역량훈련 #바이트디그리 #자바인강
- 플러터
- Today
- Total
꾸준히 하고싶은 개발자
pandas 본문
Pandas
데이터를 효과적으로 처리하고, 보여줄 수 있도록 도와주는 라이브러리
numpy(넘파이)와 함께 사용되어 다양한 연계기능 제공
index(인덱스)에 따라 데이터를 나열함으로 Dictionary(사전)에 유사
Series(시리즈)를 기본 자료 형으로 사용(확장된 Dataframe을 가장 많이 사용)
한마디로 엑셀에서 테이블처리와 거의 동일하다.
Series
시리즈는 index(인덱스):key(키)으로 구성된다.
인덱스 (index) |
값(Key) |
커피 | 40 |
음료수 | 20 |
프로틴 | 50 |
import pandas as pd
array=pd.Series([40,20,50],index=['커피','음료수','프로틴'])
print(array)
print(array['커피'])
*사전으로 동일데이터(data) 만들어서 Series로 바꾸기
array=pd.Series(data)
DataFrame
데이터 프레임은 다수의 시리즈를 모아 처리하기 위한 목적으로 사용한다. 즉. 표 형태로 데이터를 쉽게 처리하고자 할때 사용할 수있다.
인덱스 | 몸무게 | 키 |
A | 70 | 178 |
B | 80 | 183 |
C | 60 | 187 |
w_dict={'A':70,'B':80,'C':60}
h_dict={'A':178,'B':183,'C':187}
w_S=pd.Series(w_dict)
h_S=pd.Series(h_dict)
table=pd.DataFrame({'몸무게':w_S,'키':h_S})
print(table)
시리즈연산
점수 | |
중간 | 70 |
기말 | 80 |
출석점수 | 50 |
+
점수 | |
중간 | 10 |
기말 | 20 |
출석점수 | 30 |
=
최종 | |
중간 | 80 |
기말 | 100 |
출석점수 | 80 |
w_dict={'A':70,'B':80,'C':60}
h_dict={'A':178,'B':183,'C':187}
w_S=pd.Series(w_dict)
h_S=pd.Series(h_dict)
table=pd.DataFrame({'몸무게':w_S,'키':h_S})
print(table)
시리즈 연산
w_dict={'A':70,'B':80,'C':60}
h_dict={'A':178,'B':183,'C':187}
w_S=pd.Series(w_dict)
h_S=pd.Series(h_dict)
r_S=w_S+h_S
print(r_S)
데이터 프레임 슬라이싱
w_dict={'A':70,'B':80,'C':60}
h_dict={'A':178,'B':183,'C':187}
f_dict={'A':260,'B':280,'C':250}
w_S=pd.Series(w_dict)
h_S=pd.Series(h_dict)
f_S=pd.Series(f_dict)
table=pd.DataFrame({'몸무게':w_S,'키':h_S,'신발':f_S})
print(table)
print(table.loc['A':'B','키':]) #loc는 label location 약자
print(table.iloc[1:3,2:]) #integer location 약자
print(table[['몸무게','신발']])
데이터 프레임 데이터 변경
table.loc['A','몸무게']=100 #변경
print(table)
table.loc['D']=[45,170,240] #추가
print(table)
table.to_csv('성적표.csv')
read_table=pd.read_csv('성적표.csv',index_col=0)
print(read_table)
결손값 Null NaN
결손값(결측치): 누락 데이터
일반적으로 null로 표기
출력시 NaN으로 표시
판다스에서는 결손데이터 처리를 위한 API 제공
참고> API (Application Programming Interface) : 응용 프로그램에서 사용할 수 있도록 , 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
데이터 프레임의 결손값(Null)
w_dict={'A':70,'B':80,'C':None}
h_dict={'A':np.nan,'B':175,'C':None}
f_dict={'A':260,'B':np.nan,'C':None}
w_S=pd.Series(w_dict)
h_S=pd.Series(h_dict)
f_S=pd.Series(f_dict)
table=pd.DataFrame({'몸무게':w_S,'키':h_S,'신발':f_S})
print(table.notnull())
print(table.isnull())
NaN처리-제거
# NaN이 들어있는 행은 지워라
print(table.dropna())
#모든 데이터가 NaN인 행은 지워라
print(table.dropna(how='all'))
NaN 처리 대체
#특정 열(column) NaN 값 변경
table['신발']=table['신발'].fillna(250)
print(table)
#전체 NaN
print(table.fillna(250))
데이터프레임 마스킹
Masking: 변장, 차폐
Data masking: 원본 데이터 숨기기(보호) ex> 개인식별정보는 민감한 데이터는 데이터 마스킹이 필요
Boolean Masking : 데이터를 True/False 의 참 거짓 값으로 변경
df1
인덱스 | 몸무게 | 키 |
A | 70 | 178 |
B | 80 | 183 |
C | 60 | 187 |
1. 몸무게가 60보다 크거나 같은지 출력
print(df1["몸무게"]>=60)
2. 데이터프레임 변경 몸무게가 70
이상이면 True, 이하면 False
df1['몸무게']=df['몸무게']>=70
데이터 변경
df2=pd.DataFrame(np.random.randint(1,4,(3,2)),index=[0,1,2],columns=['A','B'])
ex> 모든 값에 10더하기 -> df2+10
ex> 특정데이터 변경 1을 99로 변경->
df2.replace(1,99)
데이터프레임 추출
몸무게가 70이상인 행만 가져오기
1. df1.loc[df1["몸무게"]>60, : ]
동일의미 df1.loc[df1.몸무게>60, : ]
2. df1.query("몸무게>60")
데이터 진처리
데이터 분석을 하기 전에 원본 데이터(raw data)를 분석 할 수 있도록 가공하는 과정 – 실제로 많은 데이터들이 clean 하지 않고 dirty 함
1. 둘러보기
df.head() — 처음 5행, 윗부분을 보여줌
df.info() — 표의 속성을 요약해줌
df.describe() — 기술 통계를 요약해줌
df.columns — 열 이름을 보여줌
df.value_counts() — 각 열에 어떤 변수들이 들어가 있는지 알려줌
2. 수정하면된다.
실습
'python > BigdataAnalysis' 카테고리의 다른 글
로지스틱 회귀 분석 (0) | 2022.09.27 |
---|---|
텍스트 빈도 분석(영어) (0) | 2022.09.27 |
상관 분석+히트맵 (0) | 2022.09.21 |
통계분석(기술통계분석+ 그래프) (0) | 2022.09.20 |
numpy (0) | 2022.09.18 |