본문 바로가기

728x90
반응형
SMALL

python

(66)
[Python] 4. 회귀 : cost(mse) test, gradient, scipy.stats 예제 import numpy as np import pandas as pd import matplotlib.pyplot as plt import scipy.stats as st cost(MSE) test def cost(x,y,w): c=0 for i in np.arange(len(x)): hx = w*x[i] c = c+(hx-y[i])**2 return c/len(x) x_data = [1,2,3] y_data = [1,2,3] print(cost(x_data,y_data,-1)) print(cost(x_data,y_data,0)) print(cost(x_data,y_data,1)) print(cost(x_data,y_data,2)) print(cost(x_data,y_data,3)) [OUT] : 18...
[Python] 3. 공분산, 상관계수 import numpy as np import pandas as pd import matplotlib.pyplot as plt 데이터 불러오기 (pd.read_csv) python 파일 경로에 data3 폴더 만든 후 다음의 ch2_scores_em.csv파일 넣어놓기 df = pd.read_csv('data3/ch2_scores_em.csv', index_col='student number') df.head() # 이해를 위해 10개만 따로 발췌해서 보도록 하자 en_scores = np.array(df['english'])[:10] ma_scores = np.array(df['mathematics'])[:10] scores_df = pd.DataFrame({'english':en_scores, 'ma..
[Python] 2. 대표값, 산포도, 정규화, 도수 import numpy as np import pandas as pd import matplotlib.pyplot as plt from scipy.stats import mode 데이터 불러오기 (pd.read_csv) python 파일 경로에 data3 폴더 만든 후 다음의 ch2_scores_em.csv파일 넣어놓기 대표값 평균값 중앙값 최빈값 df = pd.read_csv('data3/ch2_scores_em.csv', index_col='student number') df.head() scores = df['english'].values scores [OUT] : array([42, 69, 56, 41, 57, 48, 65, 49, 65, 58, 70, 47, 51, 64, 62, 70, 71, ..
[Python] 1. 데이터 종류 : 이산 변수, 연속 변수 import pandas as pd 데이터 불러오기 (pd.read_csv) python 파일 경로에 data3 폴더 만든 후 다음의 ch1_sport_test.csv 파일 넣어놓기 데이터 종류 이산 변수(범주형 변수) : 주사위 눈, 연령, 결석 횟수, 학생수 (1점, 2점 이렇게 끊어지는 경우도 해당) 연속 변수 : 길이, 무게, 시간, 온도 (소수점까지 계속 연속인 경우) df = pd.read_csv( 'data3/ch1_sport_test.csv', index_col='학생번호') df 이산 변수 : 학생 번호, 학년, 윗몸일으키기, 점수, 순위 연속 변수 : 악력 review - 이산 변수와 연속 변수 차이 구분
[Python] 0. SciPy Library(사이파이 라이브러리) 구조 : 확률분포 클래스, 모수 지정, 확률분포 매서드 사이파이를 이용한 확률분포 사이파이(SciPy)는 수치해석기능을 제공하는 파이썬 패키지다. 여러 서브 패키지로 구성되어 있는데 그중 stats 서브 패키지는 확률 분포 분석을 위한 다양한 기능을 제공한다. 다음 코드로 임포트 한다. import scipy as sp import scipy.stats 확률분포 클래스 사이파이에서 확률분포 기능을 사용하려면 우선 해당 확률분포에 대한 확률분포 클래스 객체를 생성한 후에 이 객체의 메서드를 호출해야 한다. 확률분포 객체를 생성하는 명령에는 다음과 같은 것들이 있다. 이 명령들은 모두 stats 서브 패키지에 포함되어 있다. 예를 들어 정규분포 객체는 다음과 같이 생성한다. rv = sp.stats.norm() 모수 지정 확률분포 객체를 생성할 때는 분포의 형상..
[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] 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] 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:..

728x90
반응형
LIST