2차원 데이터
Series 자료형을 테이블 형태로 표현
from pandas import Series,DataFrame
data = DataFrame([[1,2],[3,4],[5,6],[7,8]])
data
->
0 1
0 1 2
1 3 4
2 5 6
3 7 8
data = DataFrame.from_dict({'서울':[1,2,3],'부산':[2,3,4],'광주':[3,4,5]})
data
->
서울 부산 광주
0 1 2 3
1 2 3 4
2 3 4 5
data = DataFrame([[1,2],[3,4],[5,6],[7,8]],
index = [1,2,3,4],columns = ['서울','부산'])
data
->
서울 부산
1 1 2
2 3 4
3 5 6
4 7 8
data = DataFrame.from_dict({'서울' : [1,2,3],'부산':[2,3,4],'광주':[3,4,5]})
data.index = ['1월','2월','3월']
data.columns = ['서울시','부산시','광주시']
data
->
서울시 부산시 광주시
1월 1 2 3
2월 2 3 4
3월 3 4 5
-> index 0,1,2를 1월, 2월, 3월로 변경
-> column 서울, 부산, 광주를 서울시, 부산시, 광주시로 변경
data = DataFrame([[1,2],[3,4],[5,6]],
index = [1,2,3],columns = ['서울','부산'])
data
->
서울 부산
1 1 2
2 3 4
3 5 6
data['서울'] #데이터프레임['컬럼명']
->
1 1
2 3
3 5
Name : 서울, dtype : int64
data.서울 #데이터프레임.컬럼명
->
1 1
2 3
3 5
Name : 서울, dtype : int64
data[['서울','부산']]
->
서울 부산
1 1 2
2 3 4
3 5 6
(1)
df = pd.DataFrame({'서울' :[1,2],'부산시':[3,4],'대전시':[5,6]})
df
->
서울 부산시 대전시
0 1 3 5
1 2 4 6
(2)
df.rename(columns = {'서울' : '서울시'})
->
서울시 부산시 대전시
0 1 3 5
1 2 4 6
df = pd.DataFrame({'서울':[1,2],'부산':[3,4],'대전':[5,6]})
df.drop(columns = ['서울','대전'])
->
부산
0 3
1 4
df = pd.DataFrame([10,20,30], index = ['A','B','C'])
df
->
0
A 10
B 20
C 30
df.reset_index()
->
index 0
0 A 10
1 B 20
2 C 30
data.loc[1] #dataframe.loc[인덱스 이름]
->
서울 1
부산 2
Name : 1, dtype : int64
data.loc[[1,3]] #dataframe.loc[[인덱스명1, 인덱스명2]]
->
서울 부산
1 1 2
3 5 6
data.iloc[0] #dataframe.iloc[인덱스번호]
->
서울 1
부산 2
Name : 1, dtype : int64
data.iloc[0:2] #dataframe.iloc[시작:끝](시작에서 끝 미만)
->
서울 부산
1 1 2
2 3 4
(1)
인덱스 1의 부산 컬럼값
data.loc[1,'부산']
-> 2
인덱스 3의 서울 컬럼값
data.loc[3]['서울']
-> 5
인덱스 1,2의 서울 컬럼값
data.loc[[1,2],['서울']]
->
서울
1 1
2 3
(2)
인덱스 0번의 0번 컬럼값
data.iloc[0,0]
-> 1
인덱스 1번의 1번 컬럼값
data.iloc[1][1]
->4
인덱스 0~1번의 1번컬럼값
data.iloc[0:2,1]
-> 1 2
2 4
Name : 부산, dtype : int64
(1) 서울컬럼의 값이 10보다 큰 데이터 추출
df = pd.DataFrame({'서울':[10,20,30],'부산':[2,3,4],'대전':[5,6,7]})
df[df['서울']>10]
->
서울 부산 대전
1 20 3 6
2 30 4 7
(2) 서울컬럼의 값이 10인 데이터 추출
df = pd.DataFrame({'서울':[10,20,30],'부산':[2,3,4],'대전':[5,6,7]})
df[df['서울']==10]
->
서울 부산 대전
0 10 2 5
df = pd.DataFrame({'서울' :[10,20,30,40,50,60],
'부산' :[1,2,3,4,5,6],
'대전' :[5,6,7,8,9,10]})
df
->
서울 부산 대전
0 10 1 5
1 20 2 6
2 30 3 7
3 40 4 8
4 50 5 9
5 60 6 10
df.sample(frac = 0.5)
->
서울 부산 대전
1 20 2 6
2 40 4 8
3 30 3 7
df.sample(n=4)
->
서울 부산 대전
1 20 2 6
0 10 1 5
2 30 3 7
4 50 5 9
merge
(1) left 데이터 지역명 기준으로 right 데이터 결합
pd.merge(left = data1, right = data2, how = "left", on = "지역명")
->
지역명 순위 금액 판매수 대기
0 서울 1 10 10.0 100.0
1 부산 2 20 20.0 200.0
2 광주 3 30 NaN NaN
(2) right 데이터 지역명 기준으로 left 데이터 결합
pd.merge(left = data1, right = data2, how = "right", on = "지역명")
->
지역명 순위 금액 판매수 대기
0 서울 1.0 10.0 10 100
1 부산 2.0 20.0 20 200
2 인천 NaN NaN 30 300
(3) left, right 모든 데이터를 결합
pd.merge(left = data1, right = data2, how = "outer", on = "지역명")
->
지역명 순위 금액 판매수 대기
0 서울 1.0 10.0 10.0 100.0
1 부산 2.0 20.0 20.0 200.0
2 광주 3.0 30.0 NaN NaN
3 인천 NaN NaN 30.0 300.0
data1 = DataFrame([["서울",1,10],["부산",2,20],["광주",3,30]],columns = ['지역명','순위','금액'], index = ['1월','2월','3월'])
data1
->
지역명 순위 금액
1월 서울 1 10
2월 부산 2 20
3월 광주 3 30
data2 = DataFrame([["서울",10,100],["부산",20,200],["인천",30,300]], columns = ["지역명","판매수","대기"], index = ["1월","3월","5월"])
data2
->
지역명 판매수 대기
1월 서울 10 100
3월 부산 20 200
5월 인천 30 300
pd.merge(left = data1, right = data2, left_index = True, right_index = True, how = "inner")
->
지역명_x 순위 금액 지역명_y 판매수 대기
1월 서울 1 10 서울 10 100
3월 광주 3 30 부산 20 200
df1 = DataFrame([[1,2],[3,4]])
df1
->
0 1
0 1 2
1 3 4
df2 = DataFrame([[10,20],[30,40]])
df2
->
0 1
0 10 20
1 30 40
df1 + df2
->
0 1
0 11 22
1 33 44
df1 - df2
->
0 1
0 -9 -18
1 -27 -36
df1 * df2
->
0 1
0 10 40
1 90 160
df1 / df2
->
0 1
0 0.1 0.1
1 0.1 0.1
csv 불러오기
pd.read_csv(FilePath,sep,header,names,index_col,skiprows,nrows,encoding)
FilePath : 파일경로, sep : 구분자, header(컬럼명) : 없을 경우 none
names : header가 없을시 컬럼명 입력 가능, skiprows : 파일에서 행을 건너뛰고 불러옴
index_col : 컬럼을 index로 사용, nrows : 입력한 개수만큼의 데이터만 읽음
encoding : 인코딩 타입 입력, 데이터가 한글이면 'CP949'
data = pd.read_csv("cdata.csv", encoding = 'cp949')
data.head()
->
index No Name Age City
0 0 1 홍길동 25 서울
1 1 2 김준기 21 서울
2 2 9 이명식 22 부산
3 3 32 방준혁 24 광주
4 4 47 최명기 31 부산
csv 파일에 한글 데이터가 존재할때 encoding옵션 선택 후 불러오기
data = pd.read_csv("cdata_nohead.csv",encoding='cp949',header=None)
data.head()
->
상위 columns 추가
data = pd.read_csv("cdata_nohead.csv",
encoding = 'cp949',
header = None,
names = ['index','번호','이름','나이','지역'],
)
data.head(2)
-> 컬럼에 index가 들어가고
data = pd.read_csv("cdata_nohead.csv",
encoding = 'cp949',
header = None,
names = ['index','번호','이름','나이','지역'],
index_col = 'index'
)
data.head(2)
-> 기존 index에 index가 삽입됨
data = pd.read_excel('cdata.xisx')
data
data = pd.read_excel('cdata.xlsx',index_col='index')
data
1. sum() : 합계
data.sum()
2. mean() : 평균
data.mean()
3.std() : 평균
data.std()
4.var() : 분산
data.var()
1. 매출컬럼 기준으로 오름차순 정렬
data.sort_values(by = "매출", axis = 0).head()
->
매출 사용자수
광주 7 30
서울 10 5
인천 20 3
부산 30 7
2. 매출컬럼 기준으로 내림차순 정렬
data.sort_values(by = "매출", axis = 1).head()
->
1. index명 기준으로 정렬
data.sort_index()
->
매출 사용자수
광주 7 30
부산 30 7
서울 10 5
인천 20 3
2. 컬럼명 기준으로 정렬
data.sort_index(axis = 1)
->
매출 사용자수
서울 10 5
부산 30 7
인천 20 3
광주 7 30
df = pd.DataFrame({'서울' : [10, np.nan, 30, 40, np.nan, 60],
'부산' : [1,2,np.nan,4,5,6],
'대전' : [5,np.nan,7,8,9,np.nan]})
df
---
df.isnull()
->
서울 부산 대전
0 False False False
1 True False True
2 False True False
3 False False False
4 True False False
5 False False True
df.dropna()
->
서울 부산 대전
0 10.01 1.0 5.0
3 40.0 4.0 8.0
df.fillna(10)
->
서울 부산 대전
0 10.0 1.0 5.0
1 10.0 2.0 10.0
2 30.0 10.0 7.0
3 40.0 4.0 8.0
4 10.0 5.0 9.0
5 60.0 6.0 10.0
df.fillna(df.mean())
->
서울 부산 대전
0 10.0 1.0 5.0
1 35.0 2.0 7.25
2 30.0 3.6 7.0
3 40.0 4.0 8.0
4 35.0 5.0 9.0
5 60.0 6.0 7.25
colab
https://colab.research.google.com/drive/1bPu8PZb97jz0miZiCsHtpLH6TQtfM8pS?usp=sharing