본문 바로가기

프로그래밍

pandas 까먹는것들

  • DataFrame 만들기
import pandas as pd

## name, korean_score, english_score 컬럼이 있는 데이터 프레임 만들기

#########방법 1

names = ['aaa','bbb','ccc']
1_scores =[56,77,98]
2_scores =[75,56,89]

dict1 = {
	'name' = names,
    'korean_score' = 1_scores,
    'english_score' = 2_scores
}

df = pd.DataFrame(dict1)
print(df)

#########방법 2

school = [ ['aaa',56,75],['bbb',77,56],['ccc',98,89] ]

df = pd.DataFrame(school, columns=['name','korean_score','english_score'])
df
print(df)
  • dtype
dtype 설명
int64 정수
float64 소수
object 텍스트
bool 참, 거짓
datetime64 날짜,시간
category 명목형
  • 특정 컬럼을 index로
import pandas as pd

test = pd.read_csv('test.csv, index_col=0)

## 결과: 첫번째 컬럼이 index로 들어감
  • DataFrame 특정 열 추출 2가지 방법
import pandas as pd
#2가지 종류의 DataFrame

school = [ ['aaa',10,76],['bbb',45,46],['ccc',57,96], ['dddd',99,99] ]

df1 = pd.DataFrame(school, columns=['name','korean_score','english_score'])
df1


names = ['aaa','bbb','ccc','ddd']
one_scores = [10,45,57,99]
two_scores = [76,46,96,99]

dict1 = {
    
    'korean_score': one_scores,
    'math_score': two_scores
}

df2 = pd.DataFrame(dict1,index=names)


#### 1개의 컬럼
df1['korean_score']
#### 2개 이상의 컬럼
df1[['korean_score','english_score']] ## 리스트로 작성

#### 범위로 컬럼 추출
df1.loc[:,'name':'english_score']  ### 컬럼의 경우는 slicing을 기존(바로위)방식으로 안되고, loc 를 써야함

#### blooean
df1.loc[:,[True,False]]  ### 첫열만 출력
  • DataFrame 특정 행 추출 2가지 방법
import pandas as pd
#2가지 종류의 DataFrame

school = [ ['aaa',10,76],['bbb',45,46],['ccc',57,96], ['dddd',99,99] ]

df1 = pd.DataFrame(school, columns=['name','korean_score','english_score'])
df1


names = ['aaa','bbb','ccc','ddd']
one_scores = [10,45,57,99]
two_scores = [76,46,96,99]

dict1 = {
    
    'korean_score': one_scores,
    'math_score': two_scores
}

df2 = pd.DataFrame(dict1,index=names)


######### 행 이름 없을때(index 화 안되어있을때, df1) 특정 행 추출

df1[0:1]  # 첫행 출력


######### 행 이름 있을때(df2) 특정 행 추출

df2['bbb':'bbb'] # index bbb 출력
df2.loc[['bbb']] # index bbb 출력

######### blooean
df1.loc[[True,False,True]] ### True 행만 출력 , 
  • DataFrame 특정 행 조건 추출
df1.loc[df1['korean_score']>50]
  • DataFrame 특정 행의 특정열 추출
## df.loc[행, 열]
df1.loc['aaa','korean_score']
  • DataFrame 인덱싱 정리
행,열 이름,위치 1개,2개이상, 범위   loc,iloc 없이
이름 1개 df.loc["행이름1"]  
이름 2개 이상 df.loc[["행이름1",행이름2","행이름3"]]  
이름 범위 df.loc["행이름1":"행이름3"] df["행이름1":"행이름3"]
위치 1개 df.iloc[행번호1]  
위치 2개이상 df.iloc[[행번호1,행번호2,행번호3]]  
위치 범위 df.iloc[행번호1:행번호3] df[행번호1:행번호3]
이름 1개 df.loc[:,"열이름1] df["열이름1"]
이름 2개이상 df.loc[:,["열이름1","열이름2"] df[["열이름1","열이름2","열이름3"]]
이름 범위 df.loc[:,"열이름1":"열이름3"]  
위치 1개 df.iloc[:,열번호1]  
위치 2개이상 df.iloc[:,[열번호1,열번호2]]  
위치 범위 df.iloc[:,열번호1:열번호3]  
  • DataFrame 행 삭제
df1.drop('ccc',axis='index',inplace=False) 
## axis, 'index'는 행, 'colunms'는 열
## inplace, False는 원본을 안건드림, Ture 원본에서도 삭제
  • DataFrame 열 이름 변경, index 열 이름추가
df1.rename(columns={'korean_score': 'math_score'}, inplace=Ture)

## index 이름
df.index.name = "name

## index 바꾸기
df.set_index('컬럼명',inplace=True)
  • DataFrame 정보, 통계, 정렬
df.info() ## 정보
df.describe() ## 통계치
df.sort_values(by='price') ## ascending=False 를 추가하면 큰것부터,  inplace=True 하면 원본바꿈
  • DataFrame 중복제거, 개수세기
df['컬럼명'].unique()  ##중복제거
df['컬럼명'].value_counts()  ##같은것 개수세기

df['컬럼명'].describe() ## 컬럼내 instance의 개수, 중복값, 제일 많은 instance, 제일 instance 몇개

'프로그래밍' 카테고리의 다른 글

python class 정리  (0) 2020.05.25
python 이미지 크롭  (0) 2020.05.19
numpy array와 python list 차이  (0) 2020.05.13
python array  (0) 2020.05.13
자주쓰는 python  (0) 2020.05.13