본문 바로가기

728x90
반응형
SMALL

코딩으로 익히는 Python/Pandas

(24)
[Python] 24. pandas DataFrame 데이터 분석 실습 종합 문제 : sort(), pd.cut(),apply(lambda), sr.quantile(), value_counts(), histogram(), pie chart 예제 import pandas as pd import numpy as np import matplotlib.pyplot as plt import matplotlib matplotlib.rcParams['font.family']='Malgun Gothic' matplotlib.rcParams['axes.unicode_minus'] = False 국어점수 데이터 sr = pd.Series( [90,90,55,60,76,80,76,88,30,25], name="국어점수" ) sr.index=['홍길동','이순신','임꺽정','정난정', '이이','이황','정도전','김철수1', '김철수2','김철수3'] sr [OUT] : 홍길동 90 이순신 90 임꺽정 55 정난정 60 이이 76 이황 80 정도전 76 김철수1..
[Python] 23. pandas DataFrame 맛집 데이터 파싱 분석 실습 : BeautifulSoup, REQ, select_one()예제 from bs4 import BeautifulSoup import urllib.request as REQ import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplotlib import rc import matplotlib rc('font', family='AppleGothic') plt.rcParams['axes.unicode_minus'] = False 메뉴판 닷컴에서 데이터 파싱하기 murl = 'https://www.menupan.com/restaurant/bestrest/bestrest.asp?page=1&trec=33&areacode=bs203&pt=rt' response = REQ.urlopen(murl)..
[Python] 22. pandas DataFrame 졸음운전 데이터 분석 연습문제 : read_csv(),concat(),to_datetime(),nlargest(1,kee='all')예제 import pandas as pd import numpy as np import matplotlib.pyplot as plt import matplotlib from datetime import datetime from pandas_datareader import data matplotlib.rcParams['font.family']='Malgun Gothic' matplotlib.rcParams['axes.unicode_minus'] = False 데이터 불러오기 (pd.read_csv) python 파일 경로에 data폴더 만든 후 다음의 파일들 넣어놓기 data1 = pd.read_csv('data/2014년 졸음운전 교통사고.csv',encoding='euc-kr') data2 = pd.read..
[Python] 21. pandas DataFrame 시계열 데이터 : datetime, 삼성주식데이터 파싱&시각화, rolling(window)예제 from bs4 import BeautifulSoup import urllib.request as REQ import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplotlib import rc import matplotlib from datetime import datetime from pandas_datareader import data rc('font', family='AppleGothic') plt.rcParams['axes.unicode_minus'] = False datetime 표준라이브러리 dt = datetime(1995,9,7,9,4,13) dt [OUT] : datetime.datetime(1995, ..
[Python] 20. pandas DataFrame merge(병합) : pd.merge(),pd.concat()예제 import pandas as pd import numpy as np employee = [{'empno':1, 'ename':'kim', 'dept':1}, {'empno':2, 'ename':'lee', 'dept':2}, {'empno':3, 'ename':'park', 'dept':1}, {'empno':4, 'ename':'song', 'dept':3}, {'empno':5, 'ename':'min', 'dept':2} ] dept=[{'dept':1, 'deptname':'관리직'}, {'dept':2, 'deptname':'영업직'}, {'dept':3, 'deptname':'개발직'} ] info =[{'empno':1, 'addr':'서울시','phone':'010-1111-1111'},..
[Python] 19. 기상청데이터 파싱 분석 및 시각화 : bs4 BeautifulSoup, urlib.request , REQ예제 from bs4 import BeautifulSoup import urllib.request as REQ import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplotlib import rc import matplotlib import seaborn as sns rc('font', family='AppleGothic') plt.rcParams['axes.unicode_minus'] = False 중앙일보 전체기사xml jurl = 'https://rss.joins.com/joins_news_list.xml' response = REQ.urlopen( jurl ) soup = BeautifulSoup( response,..
[Python] 18. pandas DataFrame pivot_table : groupby(), sum(), max(), min(), count(), agg(), aggfunc=[] 예제 import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplotlib import rc import matplotlib rc('font', family='AppleGothic') plt.rcParams['axes.unicode_minus'] = False 데이터 불러오기 (pd.read_csv) python 파일 경로에 data폴더 만든 후 다음의 hotel.xlsx 파일 넣어놓기 df = pd.read_csv('data/grade.csv') df g = df.groupby('학년') g.mean() df.info() # pivot_table에서는 수치형 데이터들의 mean 계산(기본) [OUT] : RangeIndex..
[Python] 17. pandas DataFrame groupby : groupby(), sum(), max(), min(), count(), agg()예제 import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplotlib import rc import matplotlib rc('font', family='AppleGothic') plt.rcParams['axes.unicode_minus'] = False 데이터 불러오기 (pd.read_csv) python 파일 경로에 data폴더 만든 후 다음의 hotel.xlsx 파일 넣어놓기 df = pd.read_excel('data/hotel.xlsx',index_col=0) df.head() df['grade'].unique() [OUT] : array([10, 8, 6, 9, 7, 5]) df['grade'].value_c..
[Python] 16. pandas DataFrame 상관관계 : corr(),heatmap()예제 import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplotlib import rc import matplotlib rc('font', family='AppleGothic') plt.rcParams['axes.unicode_minus'] = False 데이터 불러오기 (pd.read_csv) python 파일 경로에 data폴더 만든 후 다음의 crime_in_Seoul.csv 파일 넣어놓기 df = pd.read_csv('data/crime_in_Seoul.csv',index_col=0,encoding = 'euc-kr',thousands = ',') df.head(20) 상관관계 r이 -1.0과 -0.7 사이이면..
[Python] 15. pandas DataFrame 통계&시각화 : sum(), unstack(), mean(), values, min(), idxmax(), median(), quantile(), count(), describe()예제 import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplotlib import rc import matplotlib rc('font', family='AppleGothic') plt.rcParams['axes.unicode_minus'] = False data = {'eng':[10,30,50,70], 'kor':[20,40,60,80], 'math':[90,50,20,70]} df = pd.DataFrame(data, index=['a','b','c','d'] ) df def fn( v ): print("=========") print("v=>",v) print("=========") return v.sum() d..
[Python] 14. pandas DataFrame 통계 : sum(), unstack(), mean(), values, min(), idxmax(), median(), quantile(), count(), describe()예제 import pandas as pd import numpy as np data = {'eng':[10,30,50,70], 'kor':[20,40,60,80], 'math':[90,50,20,70]} df = pd.DataFrame(data, index=['a','b','c','d'] ) df 데이터프레임 통계함수 default(column별), axis=1 (row별) ※ 일반함수들은 default(row별), axis=1(column별) 이므로 주의 ex) df.dropna(axis=1) 은 NaN이 있는 column삭제 df.sum() [OUT] : eng 160 kor 200 math 230 dtype: int64 df.sum(axis=1) [OUT] : a 120 b 120 c 130 d 220 ..
[Python] 13. pandas DataFrame 추가 수정 삭제 검색 정렬 : dropna(subset=[]),fillna(),isna(),sort_values(),sort_index()예제 import pandas as pd import numpy as np data = {'eng':[10,30,50,70], 'kor':[20,40,60,80], 'math':[90,50,20,70]} df = pd.DataFrame(data, index=['a','b','c','d'] ) df 추가 컬럼 추가 df['my1'] =[1,2,3,4] #컬럼이 있으면 수정, 없으면 추가 df['my2'] = df['kor'] + df['eng'] df 행 추가 data = {'eng':[10,30,50,70], 'kor':[20,40,60,80], 'math':[90,50,20,70]} df = pd.DataFrame(data, index=['a','b','c','d'] ) df df.loc['e'] =[1,2..
[Python] 12. pandas DataFrame 연산 : loc(),iloc(),boolean indexing, isin(), query(), f-string formatting 예제 import pandas as pd import numpy as np data = {'eng':[10,30,50,70], 'kor':[20,40,60,80], 'math':[90,50,20,70]} df = pd.DataFrame(data, index=['a','b','c','d'] ) df 산술 연산 df+1 df*2 df['eng'] = [1,2,3,4] df df['eng'] = df['eng'] + 2 df  df.loc['a'] = df.loc['a'] + 2 df df.loc['b':'c','kor':] = [[1,2],[3,4]] df df.loc['b':'c','kor':] = df.loc['b':'c','kor':] +2 df boolean indexing data = {'eng':[1..
[Python] 11. pandas DataFrame 인덱싱(Indexing), 슬라이싱(Slicing) 예제 import pandas as pd import numpy as np data = {'eng':[10,30,50,70], 'kor':[20,40,60,80], 'math':[90,50,20,70]} df = pd.DataFrame(data, index=['a','b','c','d'] ) df # df['a'] # df['컬럼명'] df['eng'] [OUT] : a 10 b 30 c 50 d 70 Name: eng, dtype: int64 df[['eng','math']] df['eng']['a':'c'] [OUT] : a 10 b 30 c 50 Name: eng, dtype: int64 df[['eng']] # df[슬라이싱(row)] df[1:3] df df['b':'c'] iloc 인덱싱 슬라이싱(..
[Python] 10. pandas DataFrame 속성 : ndim, shape, len(), size, T, index, keys(), columns, values, dtypes, info() 예제 import pandas as pd import numpy as np data = {'eng':[10,30,50,70], 'kor':[20,40,60,80], 'math':[90,50,20,70]} df = pd.DataFrame(data, index=['a','b','c','d'] ) df df.ndim #몇차원 [OUT] : 2 df.shape #(행, 열) [OUT] : (4, 3) df.shape[0] #행의 갯수 [OUT] : 4 len(df) #행의 갯수 [OUT] : 4 df.size #데이터의 갯수 [OUT] : 4 df.T df.index [OUT] : Index(['a', 'b', 'c', 'd'], dtype='object') df.keys() [OUT] : Index(['eng', ..
[Python] 09. pandas DataFrame import pandas as pd import numpy as np d1 = [[1,2],[3,4],[5,6]] d2 = [(1,2),(3,4),(5,6)] d3 = [{'kor':1,'eng':2}, {'kor':3,'eng':4}, {'kor':5,'eng':6}, ] d4 = {'kor':[1,3,5],'eng':[2,4,6]} df1 = pd.DataFrame(d1, index=['a','b','c'],columns=['eng','kor']) df1 df2 = pd.DataFrame(d2) df2 df3 = pd.DataFrame(d3) df3 df4 = pd.DataFrame(d4) df4 review - DataFrame 만들기
[Python] 08. pandas Series Example : apply(lambda),pd.cut().value_counts().sort_index(),items(),unpacking import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplotlib import rc import matplotlib rc('font', family='AppleGothic') plt.rcParams['axes.unicode_minus'] = False sr = pd.Series( [90,90,55,60,76,80,76,88,30,25], name="국어점수" ) sr.index=['홍길동','이순신','임꺽정','정난정', '이이','이황','정도전','김철수1', '김철수2','김철수3'] sr [OUT] : 홍길동 90 이순신 90 임꺽정 55 정난정 60 이이 76 이황 80 정도전 76 김철수1 88 김철수2..
[Python] 07. pandas Series 통계/시각화 : idxmax(),idxmin(),nlargest(),nsmallest(),quantile(),cut(),to_csv() 예제 import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplotlib import rc import matplotlib rc('font', family='AppleGothic') plt.rcParams['axes.unicode_minus'] = False data = {'aa':10,'bb':20,'cc':30,'dd':40,'ee':50} sr = pd.Series(data, name='국어점수') sr [OUT] : aa 10 bb 20 cc 30 dd 40 ee 50 Name: 국어점수, dtype: int64 sr.idxmax() # numpy에서는 argmax()이고 pandas에서는 idxmax() [OUT]..
[Python] 06. pandas Series 문자열 데이터 검색 : str.contains(),str.replace(),정규표현식메타기호 예제 import pandas as pd import numpy as np sr = pd.Series(['홍길동','이순신','김철수','김순이', '이홍김'] ) sr.index=['aa','bb','cc','dd','ee'] sr [OUT] : aa 홍길동 bb 이순신 cc 김철수 dd 김순이 ee 이홍김 dtype: object # 데이터가 문자열 시리즈객체의 str속성을 이용한다. # sr.index.str # 문자열 index sr.str # 데이터가 문자열 문자열 인덱싱 슬라이싱 sr.str[0] # 성만 가져오기 [OUT] : aa 홍 bb 이 cc 김 dd 김 ee 이 dtype: object sr.str[1:] [OUT] : aa 길동 bb 순신 cc 철수 dd 순이 ee 홍김 dtype: o..
[Python] 05. pandas Series 추가,수정,삭제,검색,정렬 : loc(),drop(),append(),inplace=True예제 import pandas as pd import numpy as np data = {'aa':10,'bb':20,'cc':30,'dd':40, 'ee':50} sr = pd.Series(data, name='국어점수') sr [OUT] : aa 10 bb 20 cc 30 dd 40 ee 50 Name: 국어점수, dtype: int64 CRUD Create : 생성 Read : 읽기 Update : 갱신 Delete : 삭제 추가 & 수정 sr[0] = 100 # sr['aa'] = 100 # sr.loc['aa'] = 100 # sr.iloc[0] = 100 sr[1:3] = [1,2] # sr.iloc[1:3] = [1,2] # sr['bb':'cc'] = [1,2] # sr.loc['bb':'cc'..
[Python] 04. pandas Series 연산 : 산술관계논리(element wise),isin(),between()예제 import pandas as pd import numpy as np data = {'aa':10,'bb':20,'cc':30,'dd':40, 'ee':50} sr = pd.Series(data, name='국어점수') sr [OUT] : aa 10 bb 20 cc 30 dd 40 ee 50 Name: 국어점수, dtype: int64 sr.index [OUT] : Index(['aa', 'bb', 'cc', 'dd', 'ee'], dtype='object') 산술관계논리(element wise) sr+1 [OUT] : aa 11 bb 21 cc 31 dd 41 ee 51 Name: 국어점수, dtype: int64 sr*2 [OUT] : aa 20 bb 40 cc 60 dd 80 ee 100 Name:..
[Python] 03. pandas Series 인덱싱(Indexing),슬라이싱(Slicing) : boolean indexing,loc()과 iloc() 차이 예제 import pandas as pd import numpy as np data = {'aa':10,'bb':20,'cc':30,'dd':40, 'ee':50} sr = pd.Series(data, name='국어점수') sr [OUT] : aa 10 bb 20 cc 30 dd 40 ee 50 Name: 국어점수, dtype: int64 인덱싱 sr[0] # sr의 제일 처음 값 가져오기 [OUT] : 10 sr[-1] # sr의 제일 마지막 값 가져오기 [OUT] : 50 sr['aa'] # sr.aa -> 가능하지만 권장하진 않음. 속성명과 인덱스가 중복될 수 있으므로. [OUT] : 10 sr['cc'] [OUT] : 30 sr[[0,2,3]] [OUT] : aa 10 cc 30 dd 40 Name:..
[Python] 02. pandas Series 속성 : Series(),dictionary,index,dtype,ndim,shape,size,name예제 import pandas as pd import numpy as np data = {'aa':10,'bb':20,'cc':30,'dd':40, 'ee':50} # 딕셔너리 sr = pd.Series(data, name='국어점수') # 시리즈 생성 sr [OUT] : aa 10 bb 20 cc 30 dd 40 ee 50 Name: 국어점수, dtype: int64 sr.dtype [OUT] : dtype('int64') sr.ndim # 몇 차원 [OUT] : 1 sr.shape # 벡터와 같은개념. 튜플 [OUT] : (5,) sr.size # 전체 데이터의 개수 [OUT] : 5 sr.name [OUT] : '국어점수' print(sr.index) print(type(sr.index)) # index..
[Python] 01. pandas Series 만들기 : pd.Series()예제 import pandas as pd import numpy as np # 1차원 데이터 myList = [10,20,30,40] # 리스트 t = (10,20,30,40) # 튜플 d = {'aa':10,'bb':20,'cc':30} # 딕셔너리 판다스의 핵심 Series : 1차원데이터 DataFrame : 2차원데이터(이상) 시리즈 예제 sr1 = pd.Series(myList,index=['aa','bb','cc','dd'], dtype=np.int32, name='kor' ) sr1 [OUT] : aa 10 bb 20 cc 30 dd 40 Name: kor, dtype: int32 sr2 = pd.Series(t) sr2 [OUT] : 0 10 1 20 2 30 3 40 dtype: int64 s..

728x90
반응형
LIST