[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 MultiIndex column : levels, get_level_values(),pd.MultiIndex.from_product()예제
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 = np.random.randint(1,10, size=4) data array([2, 9, 5, 7]) data = np.random.randint(30,101, size=(4,6) ) data array([[94, 42, 91, 67, 54, 94], [87, 30, 83, 31, 92, 65], [83, 43, 99, 43, 37, 59], [82, 88..
[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] 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] 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..