- 판다스(pandas) 라이브러리는 파이썬에서 데이터분석을 할때 가장 많이 쓰는 라이브러리
- 표 형태의 데이터를 다루는 다양한 기능을 제공하고 있다
import pandas as pd
pd.read_csv("파일이름.csv")
pd.read_csv("파일이름.csv", sep=',') # csv같은경우 sep=','는 생략가능
pd.read_csv("파일이름.tsv", sep='\t') # tsv같은경우 sep을 '\t'을 사용하여 tap으로 바꿔준다
pd.read_csv('파일이름.xlsx',sheet_name = "시트이름")
# sheet 이름이 다른경우 다른 sheet번호에 데이터가 있는경우
csv, tsv, excel = 눈으로 보고 싶을 때 사용한다.
read_csv,read_excel
but 속도가 느리고 용량이 큰 단점이 있다.
pd.read_csv('파일이름.pickle')
df.to_csv('파일이름.csv',index = True)
매개변수
index = True/False : 인덱스 유무(행 번호 보이게/안보이게)
df.to_csv('파일이름.tsv, sep ='\t', index = True)
매개변수
index = True/False : 인덱스 유무(행 번호 보이게/안보이게)
df.to_excel('파일이름.xlsx', index = True)
매개변수
index = True/False : 인덱스 유무(행 번호 보이게/안보이게)
df.to_pickle('파일이름.pickle')
- utf-8 (유니코드)
- cp949
- euc-kr
데이터프레임에서 각각의 열을 시리즈 라고 한다.
판다스의 pd.Series() 함수를 사용하여 시리즈를 생성할 수 있다.
- 표(데이터프레임) 형태의 데이터
- 열 = 시리즈
dic = {"a" : 1, "b" : 2, "c" :3}
pd.Series(dic)
=> 행 값
a 1
b 2
c 3
dtype: int64
box = ['홍길동', '이순신', '아이유']
pd.Series(box)
=>
0 홍길동
1 이순신
2 아이유
dtype: object
box = ['홍길동', '이순신', '아이유']
pd.Series(box, index = ['가','나','다'])
=>
가 홍길동
나 이순신
다 아이유
dtype: object
box = ['홍길동', '이순신', '아이유']
s = pd.Series(box, index=['가','나','다'])
type(s)
=> pandas.core.series.Series
dic = {'이름': ['홍길동','이순신','아이유'],
'성별':['남자','남자','여자'],
'나이': [40,50,20]}
pd.DataFrame(dic)
=>
이름 성별 나이
0 홍길동 남자 40
1 이순신 남자 50
2 아이유 여자 20
dic = {'이름': ['홍길동','이순신','아이유'],
'성별':['남자','남자','여자'],
'나이': [40,50,20]}
pd.DataFrame(dic, index = ['A','B','C']) #행이름 설정
=>
이름 성별 나이
A 홍길동 남자 40
B 이순신 남자 50
C 아이유 여자 20
dic = {'이름': ['홍길동','이순신','아이유'],
'성별':['남자','남자','여자'],
'나이': [40,50,20]}
pd.DataFrame(dic, index = ['A','B','C'], columns = ['성별','나이','이름'])
=>
성별 나이 이름
A 남자 40 홍길동
B 남자 50 이순신
C 여자 20 아이유
box = [['홍길동','남자','40'],['이순신','남자','50'],['아이유','여자','20']]
pd.DataFrame(box)
=>
0 1 2
0 홍길동 남자 40
1 이순신 남자 50
2 아이유 여자 20
box = [['홍길동','남자','40'],['이순신','남자','50'],['아이유','여자','20']]
pd.DataFrame(box, columns= ['이름','성별','나이'])
=>
이름 성별 나이
0 홍길동 남자 40
1 이순신 남자 50
2 아이유 여자 20
df[열]
df[[열1,열2]] #대괄호 2개
lic[0] => 행이름이 0
iloc[0] => 0번째 행
loc[[0,10,100], ["year", "역"]]
iloc[[0,10,100], [0,2]]
df[조건]
df[(조건)] & (조건2)]
df[(조건)] | (조건2)]
df[df['직업'] == '연구원']
df[(df['직업'] =='연구원') | (df['나이']>df['나이'],mean())]
df.head()
df.head(n=10)
df.tail()
df.tail(n=10)
s.drop_duplicates()
df.drop_duplicates()
s.replace(값, 변경값)
s.sample(n)
s.sort_values() = 오름차순
s.sort_vlaues(ascending = False) = 내림차순
s.sort_index() = 행번호
s.sort_index(ascending = False) = 내림차순
df['출생일'].dt.day(month)fig = plt.figure() = 그림 그리기위한 도화지 준비
ax = fig.add_subplot(1,1,1) = 원하는 행 열 번째 정하기. (1행 1열 1번째)
ax = df[열].plot.hist() = 히스토그램 만들기
ax1.set_title(제목) = 큰제목
fig_suptitle(제목) = 그림중1개 제목
fig.tight_layout() = 윗 그래프와 제목이 겹쳤을때 사용
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax = tips['total_bill'].plot.hist()
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax = tips[['total_bill', 'tip']].plot.hist(alpha=0.5, bins= 20)
alpha = 투명도
bins = 막대 갯수
ax = tips['tip'].plot.kde() #자리할당 안해도됨(plt.figure())
kde() = 밀도
df.plot.scatter(x='total_bill',y='tips')
df.plot.hexbin(x='total_bill',y='tips', gridsize = 10)
# gridsize = 육각형 크기
df.plot.pie(y='mass')
pd.concat([df1,df2,등]) = 열 이름을 기준으로 합침
pd.concat([df1,df2,등], axis = 1) = 행 이름을 기준으로 합침
df1.merge(df2, left_on =df1의기준열, right_on=df2의 기준열)
ex)
visited.merge(site, left_on = "site", right_onf = "name"_
np.count_nonzero(데이터.isnull())
df['Cases_Guinea'].calue_counts(dropna=False)
fillna(method = 'ffill') = 바로 앞,뒤 값으로 채움
fillna(method = 'bfill')
df.interpolate() = 흐름에 따라 채움(아주 강력)
pd.melt(df, id_var = ~)
pd.melt(df, id_vars=['religion'], var_name = 'income', value_name = 'count')
pd.melt(billboard, id_vars=['year','artist','track','time','date_entered'],
var_name='week',value_name = 'rating')
s.str.split('학번')
pivort_table(index = ['id','year','month','day'], columns = 'element, calues = 'temp',
dropna = False)
df.reset_index()
pd[열].rank(method = ~, ascending=True/False) (오름차순,내림차순)
df.groupby('반').mean() = 반평균
df['총합'] =df['국어'] + df['영어'] 등
df['총합'] = df.iloc[:,2:],sum(axis =1)
df['평균'] = df['총합']/5
df['순위'] = df['평균'], rank(method = 'average', ascending = False)