프로그래밍/Python 49

Matplotlib with pandas

pandas를 이용한 matplotlib 그리기 df = pd.read_csv("./president_heights.csv") fig, ax = plt.subplots() ax.plot(df["order"], df["height(cm)"], label="height") ax.set_xlabel("order") ax.set_ylabel("height(cm)") 예제 👇 불 포켓몬과 물 포켓몬의 공격력, 방어력 비교 df = pd.read_csv("./data/pokemon.csv") fire = df[(df['Type 1']=='Fire') | ((df['Type 2'])=="Fire")] # 불 포켓몬 water = df[(df['Type 1']=='Water') | ((df['Type 2'])=="Wa..

Matplotlib Bar&Histogram

Bar plot # bar x = np.arange(10) fig, ax = plt.subplots(figsize=(12, 4)) # 가로 12, 세로 4 ax.bar(x, x*2) # Y는 X의 2배로 설정 # x*2 = 2배 / x**2 = x^2 = x² Bar plot은 누적 그래프 그리는 것도 가능함 x = np.random.rand(3) y = np.random.rand(3) z = np.random.rand(3) data = [x, y, z] fig, ax = plt.subplots() x_ax = np.arange(3) for i in x_ax: ax.bar(x_ax, data[i], # 데이터를 x, y, z순으로 쌓아올림 bottom=np.sum(data[:i], axis=0)) # d..

Matplotlib 그래프

Line plot fig, ax = plt.subplots() # .subplots() 인 경우 1개 fig만 생성 x = np.arange(15) # 0~14 y = x ** 2 # x² ax.plot( x, y, linestyle=":", # 선을 점으로 표시 marker="*", # 선 위에 x값을 *모양으로 표시 color="#524FA1" ) Line style 알아보기 x = np.arange(10) # 0~9 fig, ax = plt.subplots() ax.plot(x, x, linestyle="-") # solid ax.plot(x, x+2, linestyle="--") # dashed ax.plot(x, x+4, linestyle="-.") # dashdot ax.plot(x, x+6,..

Pandas groupby (2)

apply, lambda groupby를 통해서 묶인 데이터에 함수 적용 df.groupby('key').apply(lambda x: x.max() - x.min()) # groupby로 묶고 최대값-최소값 get_group groupby로 묶인 데이터에서 key값으로 데이터를 가져올 수 있음 df = pd.read_csv("./univ.csv") # 상위 5개 데이터 df.head() # 데이터 추출 df.groupby("시도").get_group("충남") len(df.groupby("시도").get_group("충남")) # 결과 : 94 예제 👇 aggregate 메소드에 함수를 매개변수로 넣어줄 때, min, max, mean, count 등의 특정 함수들은 문자열 형태로 넘겨줄 수 있음 imp..

Pandas groupby (1)

group by 간단한 집계를 넘어서서 조건부로 집계하고 싶은 경우 df = pd.DataFrame({ 'data1' : range(6), 'data2' : [4,4,6,0,6,1], 'key':['A','B','C','A','B','C'] }) df.groupby('key').sum() # key라는 컬럼으로 groupby df.groupby(['key','data1']).sum() # key와 data1이라는 컬럼으로 groupby => 계층적 groupby aggregate groupby를 통해서 집계를 한번에 계산하는 방법 한 번의 groupby를 통해 여러개의 통계함수를 적용시키고 싶을 때 사용 df.groupby('key').aggregate(['min', np.median, max]) # m..

Pandas 집계함수

집계함수 ‒ count count 메서드 활용하여 데이터 개수 확인 가능 (Default : NaN값 제외) data = { 'korean': [50, 60, 70], 'math': [10, np.nan, 40] } df = pd.DataFrame(data, index = ['a','b','c']) df.count(axis = 0) # 열 기준 df.count(axis = 1) # 행 기준 집계함수 ‒ max, min max, min 메서드 활용하여 최대, 최소값 확인 가능 (Default : 열 기준, NaN값 제외) data = { 'korean': [50, 60, 70], 'math': [10, np.nan, 40] } df = pd.DataFrame(data, index = ['a','b','c'..

Pandas 데이터프레임 정렬

데이터프레임은 인덱스 혹은 컬럼값 기준으로 정렬이 가능함 Index 값 기준으로 정렬하기(sort_index) 1️⃣ axis = 0 : 행 인덱스 기준 정렬(Default 오름차순) df = df.sort_index(axis = 0) # ascending = True가 default값(오름차순) 2️⃣ axis = 1 : 열(컬럼) 인덱스 기준 내림차순 정렬 df.sort_index(axis = 1, ascending = False) # 내림차순 정렬 Column 값 기준으로 정렬하기 1️⃣ col1 컬럼 기준 정렬(Default 오름차순) df.sort_values('col1', ascending = True) # (컬럼명, 오름/내림차순) 2️⃣ col1 컬럼 기준 내림차순 정렬 df.sort_va..

Pandas 데이터 선택 및 변경하기

데이터 프레임, 시리즈 데이터 찾는 방법 1️⃣ 인덱싱/슬라이싱 .loc(명시적) : 명시적인 인덱스를 참조하는 인덱싱/슬라이싱 country.loc['china'] # 인덱싱 => 인덱스가 china인 데이터를 구하라 country.loc['japan':'korea', :'population'] # 슬라이싱 .iloc(암묵적) : 파이썬 스타일의 정수 인덱스 인덱싱/슬라이싱(암묵적인 순서에 따라 값을 추출) country.iloc[0] # 인덱싱 country.iloc[1:3, :2] # 슬라이싱 2️⃣ 컬럼 선택 컬럼명 활용하여 DataFrame에서 데이터 선택 가능 데이터 프레임에서 일부를 잘라내면 시리즈임 country country['gdp'] # 시리즈 country[['gdp']] # 데이터..

Pandas 데이터 프레임

데이터 프레임(DataFrame) 1️⃣ 여러 개의 Series가 모여서 행과 열을 이룬 데이터 import pandas as pd gdp_dict = { 'china': 1409250000, 'japan': 516700000, 'korea': 169320000, 'usa': 2041280000, } gdp = pd.Series(gdp_dict) country = pd.DataFrame({ 'gdp': gdp, 'population': population }) 2️⃣ Dictionary를 활용하여 DataFrame 생성 가능 ata = { 'country': ['china', 'japan', 'korea', 'usa'], 'gdp': [1409250000, 516700000, 169320000, 2041..

Pandas와 Series 데이터란?

Pandas란? 구조화된 데이터를 효과적으로 처리하고 저장하는 파이썬 라이브러리 Array 계산에 특화된 Numpy를 기반으로 설계 Series 데이터 Numpy의 array가 보강된 형태로 Data와 Index를 가지고 있음 import pandas as pd data = pd.Series([1, 2, 3, 4]) print(data) dtype 인자로 데이터 타입을 지정할 수 있음 import pandas as pd data = pd.Series([1, 2, 3, 4], dtype = "float") print(data.dtype) # float64 인덱스를 지정할 수 있고 인덱스로 접근 가능 import pandas as pd data = pd.Series([1, 2, 3, 4], index = [..