https://colab.research.google.com/drive/11Ji6e5ymscQ_qdgSW94qNhGGFSErTWVF
1. pandas 개요
2. pandas 모듈 사용하기
import pandas as pd
3. Series 사용, 기본적인 생성 방법
- 시리즈 생성하기
s1 = pd.Series([4,7,-5,3])
s1
- 인덱스 지정하여 생성
s1 = pd.Series([4,7,-5,3], index=['d','b','a','c'])
s1
- 딕셔너리 객체로 Series 생성
dic1 = {'a':4, 'b':7, 'c':-5, 'd':3}
s3 = pd.Series(dic1)
s3
- 인덱스 라벨 변경하기
s3.index =['e','f','g','h']
s3
4. Series 정보 확인
s3.values
s3.index
s3.dtype
s3.values # array([ 4, 7, -5, 3])
s3.index # Index(['a', 'b', 'c', 'd'], dtype='object')
s3.dtype # dtype('int64')
5. Series에 이름 지정
시리즈.name
city.name = '인구'
city
"""
서울 9904312
부산 3448737
인천 2890451
대구 2466052
Name: 인구, dtype: int64
"""
6. Series 색인
1. 인덱싱,
2. 슬리이싱
3. boolean색인
s2015['부산'] #3448737
s2015[[1]] #부산 3448737 Name: 인구, dtype: int64
s2015[[1,3,0,1]]
"""
부산 3448737
대구 2466052
서울 9904312
부산 3448737
Name: 도시, dtype: int64
"""
# boolean 색인
b = [True, True, False, True]
s2015[b]
"""
서울 9904312
부산 3448737
대구 2466052
Name: 도시, dtype: int64
"""
s15_10.isnull() # null 값 판별
s15_10.notnull() # notnull 값 판별
7. 데이터프레임
1) 딕셔너리 이용해서 생성하기 : df = pd.DataFrame(딕셔너리)
2) 리스트를 이용해서 생성하기
# df2.index = ind
# df2.columns = col
li1 = [[9904312, 3448737, 2890451, 2466052],[9631482, 3393191, 2632035, 2431774]]
df2 = pd.DataFrame(li1)
ind = ['2015', '2010']
col = ['서울','부산','인천','대구']
df2 = pd.DataFrame(li1, index= ind, columns= col)
df2
8. 데이터프레임 행, 열 변환
df2.T
df2.transpose()
9. 데이터프레임 정보 확인
1) df1.values : 값 확인
2) df1.index : 인덱스 확인
3) df1.columns : 컬럼 확인
4) df1.shape : 모양 확인
5) df1.ndim : 차원 확인
6) df1.size : 값의 총 갯수 확인
7) df1.head(3) : 위 3개 행만 출력
10. 데이터프레임 컬럼 추가
데이터프레임['컬럼명'] = [값1,값2,값3,값4]
11. 데이터프레임 색인
1) 인덱싱 : 열(컬럼) 인덱싱 : df['컬럼']
2) 슬라이싱 : 행 슬라이싱 : df['컬럼1','컬럼2','컬럼3']]
3) boolean 색인 : 행 색인 :
4) 인덱서 활용
12. csv 불러오기
pd.read_csv('csv파일.csv')
pd.read_csv('population_number.csv')
pd.read_csv('population_number.csv', index_col = '도시') # 인덱스 컬럼 지정
13. value_counts(), sort_index()
value_count : 결측치 빼고 갯수 세어줌
sort_index : 정렬
# 각각의 값이 나온 횟수를 세어주는 기능
# 결측치는 제외하고 값들의 갯수를 세어준다
pd.read_csv('population_number.csv', index_col = '도시')['2015'].value_counts()
# 정렬(sort)
# sort_index : 인덱스 값을 기준으로 정렬
# sort_values : 데이터 값을 기준으로 정렬
pd.read_csv('population_number.csv', index_col = '도시').sort_index()
# 내림차순으로 변경 : ascending = False
pd.read_csv('population_number.csv', index_col = '도시').sort_index(ascending = False)
# 2010년 기준으로 정렬 (by = '2010')
# by = 컬럼값
# 컬럼값의 데이터를 통해 정렬
# 여러 기준을 통해 정렬 가능
pd.read_csv('population_number.csv', index_col = '도시').sort_values(by='2010')
# '지역', '2010'을 통해 정렬 => 리스트 넣으면 됨
pd.read_csv('population_number.csv', index_col = '도시').sort_values(by=['지역','2010'])
14. 행추가
정석)
score.loc['반평균'] = score.mean(axis=1)
야매)
a = score.T
a['반평균'] = a.mean(axis=1)
score = a.T
score
15. apply
행 혹은 열 단위로 더 복잡한 처리를 할 때 사용
함수 지정 => 원하는 연산과 결과값
def max_min(x): return x.max()-x.min()
score.loc[:'Web', '1반':'4반'].apply(max_min, axis=1)
16. cut
카테고리 생성하기 (히스토그램 데이터)
# 구간 => 초과~이하
ages = [0,2,10,21,23,36,38,39,42,45,47,53,54,61,64,26,27,99,100,85,87]
bins = [0,15,25,35,60,99] # 구간 6
labels = ['미성년자','청년','중년','장년','노년'] # 구간의 이름
cats = pd.cut (ages, bins, labels=labels)
cats
"""
[NaN, '미성년자', '미성년자', '청년', '청년', ..., '중년', '노년', NaN, '노년', '노년']
Length: 21
Categories (5, object): ['미성년자' < '청년' < '중년' < '장년' < '노년']
"""
17. 데이터프레임 병합
1) concat : DataFrame간 병합
1-1) ignore_index : 기존인덱스를 무시하고 새로운 인덱스를 부여
1-2) axis= 1 : 행 (인덱스 라벨)을 기준으로 병합
1-3) join = 'outer' : 아우터조인
1-4) join = 'inner' : 이너조인
# DataFrame간 병합
resultDf1 = pd.concat([df1,df2,df3])
resultDf1
# 기존인덱스를 무시하고 새로운 인덱스를 부여 (필수인듯)
resultDf2 = pd.concat([df1,df2,df3], ignore_index=True)
resultDf2
# 행 (인덱스 라벨)을 기준으로 병합
# 기본적으로 outer join 되어있음
resultDf3 = pd.concat([df1,df2,df3], axis=1)
resultDf3
# 이너조인
resultDf4 = pd.concat([df1,df2,df3], axis=1, join='inner')
resultDf4
# Series 클래스 병합 가능
# axis 1로 주면 유용하게 활용!
resultDf5 = pd.concat([sr1,sr2,sr3], axis=1)
resultDf5
2) merge
2-1) how '조인속성'
2-2) on = '어떤 컬럼을 기준으로 병합?'
dic1 = {'key' : ['K0','K1','K2','K3'], 'A' : ['A0','A1','A2','A3'], 'B' : ['B0','B1','B2','B3']}
dic2 = {'key' : ['K0','K1','K2','K4'], 'C' : ['C0','C1','C2','C3'], 'D' : ['D0','D1','D2','D3']}
df4 = pd.DataFrame(dic1)
df5 = pd.DataFrame(dic2)
# how = 'outer'
resultDf7 = pd.merge(df4, df5, on = 'key', how='outer')
resultDf7
18. 행/열 삭제
1) df.drop(인덱스) : 인덱스 삭제, 커밋X
2) df.drop(인덱스, inplace=True) : 인덱스 삭제, 커밋O
3) df.drop(컬럼, axis=1)
# 1번 인덱스 삭제, 커밋X
resultDf7.drop(1)
# 1번 인덱스 삭제, 커밋O, 원본데이터에 반영 : inplace =True
resultDf7.drop(2, inplace=True)
# 컬럼 삭제 : axis=1 추가
resultDf7.drop('B', axis=1)
'수업정리 > python' 카테고리의 다른 글
matplotlib 정리 (2) | 2023.08.23 |
---|---|
numpy 정리 (0) | 2023.08.23 |