데이터 분석/Python - pandas 22

[실습] pandas 심화 2

의약품성분_주의항목.csv파일에서 다음 작업 진행import pandas as pddf = pd.read_csv('./data/의약품성분_주의항목.csv')df1. '주의항목' 컬럼에 문자열 형식으로 나누어진 카테고리를 '주의항목1','주의항목2','주의항목3' 컬럼으로 분리한 데이터프레임 출력strip = df['주의항목'].str.strip('[]')expand = strip.str.split(',', expand=True)expand.rename({0:'주의항목1', 1:'주의항목2', 2:'주의항목3'}, axis=1, inplace=True)expand▷ 앞뒤 대괄호[ ] 제거▷ 컬럼으로 확장 2. 1번 결과를 ..

[실습] pandas 심화 1

진료정보_통합.csv 파일과 기상청_서울.csv 파일에서 다음 작업 진행1. 진료정보_통합에서 '지역명'이 '서울'인 관측치를 인덱싱import pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsplt.rc('font',family='Malgun Gothic')plt.rcParams['axes.unicode_minus'] =Falsedf_medical = pd.read_csv('data/진료정보_통합.csv')df_seoul = df_medical[df_medical['지역명']=='서울']df_seoul 2. 기상청_서울에서 '일강수량(mm)'의 결측치를 0으로 채우고 나머지 컬럼의 결측치는 이전 관측치의 값으로 채우기 파일 불러오기df_..

[이론] 기능의 반복적 적용

pandas에 없는 기능 활용하기dataframe도 리스트랑 똑같이 반복문 사용할 수 있 1. for문 활용DataFrame : 컬럼이름.iloc: 순서에 따른 row 시리즈items(): (컬럼이름, 해당컬럼 시리즈)iterrows(): (인덱스, 해당로우 시리즈) import pandas as pd df_hc = pd.read_csv('data/국민건강보험공단_건강검진정보(샘플).csv', index_col=0).iloc[:5,:5]df_hc DataFrame 사용for i in df_hc: print(i) 성별연령대코드(5세단위)신장(5cm단위)수축기혈압이완기혈압in뒤에 바로 DF 넣으면 컬럼 이름이 반환 (컬럼들 반복) items() 사용for col, ser in df_hc.i..

[이론] 문자열과 날짜형

1. 문자열 (str)문자열을 가지는 시리즈를 불러와서, .str 접근자로 다양한 함수 사용가능str.contains() : 문자열 포함 관측치 인덱싱str.strip() :str.replace() :str.split() :str.contains() :  import pandas as pd df_md = pd.read_csv('./data/약가마스터_의약품주성분.csv')df_md.dropna(subset='제형', inplace=True)df_md.drop_duplicates('일반명코드', inplace=True)df_md.set_index('일반명코드', inplace=True)df_md  contains() : 문자열 포함 관측치 인덱싱contains = df_md['제형'].str.contain..

[이론] 연속형과 비연속

pandas 심화 이론1. 연속형과 비연속형2. 문자열과 날짜형3. 반복적 기능 적용 1. 연속형 변수의 이산, 범주cut(): 값을 이산 간격으로 분류(등간격)qcut(): 분위수 기반 이산화(등비율)import pandas as pddf_hc = pd.read_csv('data/국민건강보험공단_건강검진정보(샘플).csv', index_col=0)df_hc머신러닝 모델은 입력이 숫자만 들어감 (문자를 숫자로 바꿔서 학습시킴)문자열 타입을 숫로 바꿔야할 때도 있음df_hc.dtypes성별 object연령대코드(5세단위) int64신장(5cm단위) int64수축기혈압 float64이완기혈압 float64체중(5kg단위) ..

[실습] 시각화 : 여러 그래프

진료정보_통합.csv 파일에서 다음 작업 진행import pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsplt.rc('font', family='Malgun Gothic')df= pd.read_csv('./data/진료정보_통합.csv')df 1. '날짜'가 '2023' 보다 크고 '지역명'이 '서울'인 관측치를 인덱싱plt.figure()df_sub = df[(df['지역명']== '서울') & (df['날짜']>'2023')]df_sub  2. 1번 결과에서 날짜별 '천식','눈병','피부병'의 추이를 하나의 표안에 여러개의 선그래프로 그리기df_gp = df_sub.groupby('날짜',as_index=True)[['천식','눈병..

[이론] 시각화 : 여러 그래프

1. 하나의 표안에 여러개의 그래프 생성: 중첩이 되어 그려진다고 생각import pandas as pddf_gp=pd.read_csv('data/건강보험심사평가원_진료비.csv')pivot = pd.pivot_table(df, index='진료년도', columns='시도', values='환자수', aggfunc='mean')pivot = pivot.astype('int64')pivotpivot의 값을 정수 형태로 설정 ('int64') 1) 하나의 표안에 여러개의 선그래프x = pivot.index.astype('str')y1 = pivot['세종']y2 = pivot['경기']y3 = pivot['제주']plt.figure(figsize=(20,10))ax..

[실습] 데이터 시각화 : 특수 그래프

국민건강보험공단_건강검진정보(샘플).csv 파일에서 다음 작업을 진행import pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsplt.rc('font', family='Malgun Gothic')df = pd.read_csv('./data/국민건강보험공단_건강검진정보(샘플).csv', index_col = 0) 1. '수축기혈압'의 히스토그램을 그리기plt.figure(figsize=(6,4))ax = plt.subplot()ax.hist(df['수축기혈압'])plt.show()풀이>plt.figure(figsize=(6,4))ax = plt.subplot()ax.hist(df['수축기혈압'], bins=30)plt.show() bins..

[실습] 시각화 : 기본 그래프

진료정보_통합.csv 파일에서 다음 작업 수행import pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsplt.rc('font', family='Malgun Gothic')한글 불러올때는 폰트 설정해주기 1. '날짜'가 '2023' 보다 크고 '지역명'이 '서울'인 관측치를 인덱싱df1 = pd.read_csv('data/진료정보_통합.csv')df_23 = df1[(df1['날짜']>'2023')&(df1['지역명']=='서울')]날짜형으로 원래 바꾸는것이 좋음. 일단 '2023'을 문자형으로 bool 비교. 2. 1번 결과에서 날짜별 감기의 추이를 선그래프로 그리기(데이터타입 유의)x = df_23['날짜']y = df_23['감기'..

[이론] 시각화 : 선/막대/산점도 그래프

데이터 시각화선그래프, 막대그래프, 산점도그래프여러개의 그래프히스토그램, 상자그림, 히트맵import pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns 기본 그래프 작성matplotlib, seaborn로 막대그래프, 선그래프, 산점도그래프 같은 기본적인 그래프 생성▷ 그래프 x축과 y축에 해당될 여러 1차원구조(리스트, 배열, 시리즈등)가 x,y 의 순서와 개수에 맞게 입력 그래프 생성 및 기본 설정matplotlib에는 그래프가 그려지는 표객체인 Axes와 Axes를 포함하는 그림판 객체인 Figure가 존재figure() : 그림판(Figure) 설정subplot() : 그림판에 표(Axes)생성show() : 그림판을 이미지로 출력..