본문 바로가기

Python

(7)
[Python] 데이터 재구조화(reshape) : pd.crosstab() 사용해 교차표(cross tabulation) 분석을 하다 보면 원본 데이터의 구조가 분석 기법에 맞지 않아서 행과 열의 위치를 바꾼다거나, 특정 요인에 따라 집계를 해서 구조를 바꿔주어야 하는 경우가 있습니다. 재구조화(reshaping data)를 위해 사용할 수 있는 Python pandas의 함수들로 아래와 같이 다양한 함수가 있습니다. - (1) pivot(), pd.pivot_table() - (2) stack(), unstack() - (3) melt() - (4) wide_to_long() - (5) pd.crosstab() 이번 포스팅에서는 마지막으로 범주형 변수로 되어있는 요인(factors)별로 교차분석(cross tabulations) 해서, 행, 열 요인 기준 별로 빈도를 세어서 도수분포표(frequency table), 교차..
[Python 기초] 반복문 for in 구문 for 문은 우리가 전에 배웠던 리스트와 같은 시퀀스(sequence)를 이용해서 원하는 명령을 반복할 때 쓰인다. >>> family = ['mother', 'father', 'gentleman', 'sexy lady'] for 문 다음은 for 문을 이용해서 저희 가족들의 이름과 문자열 길이를 출력하는 프로그램이다. for x in family: # family의 각 항목 x에 대하여 print(x, len(x)) # x와 x의 길이를 출력하라 >>> mother 6 father 6 gentleman 9 sexy lady 9 in family for x:는 오류가 출력되므로, 문법대로 작성해야 한다. range() range는 범위라는 뜻인데 여기서는 어떤 정수를 인자로 주면 그 범위 안의 정수들을 ..
[Python] 판다스 데이터프레임(pandas dataframe) SettingWithCopyWarning 해결 기존 데이터프레임 일부를 복사하거나 인덱싱 후 값을 수정할 때 종종 발생한다. 기존 데이터프레임을 가져와(복사) 다른 데이터프레임을 만들 때 원본을 수정할 지 복사본을 수정할 지 몰라서 발생하는 오류라고 한다. 두 가지 해결 방법이 있는데, 하나는 경고를 무시하는 것이고 하나는 copy를 사용하는 것이다. 1. 경고 무시 pd.set_option을 사용한 경고문 제거 # SettingWithCopyError --> 오류 raise 로 코드 실행 X pd.set_option('mode.chained_assignment', 'raise') # SettingWithCopyWarning --> 실행은 되지만 경고문 뜸 pd.set_option('mode.chained_assignment', 'warn') # e..
[Python] Pandas DataFrame 행,열 삭제 ※ 행 삭제 drop() axis가 '0' 이라면 행 삭제, '1' 이라면 열 삭제 입니다. (default : 0) # index가 0인 행만 삭제 df = df.drop(index=0, axis=0) # index가 0,1,2,3인 행 삭제 df = df.drop(index=[0, 1, 2, 3], axis=0) 조건문 사용 # 열 값이 1234이 아닌 행(index)만 저장 df = df[df['col'] != 1234] ※ 열 삭제 drop() # 'col1', 'col2' 열 삭제 df = df.drop(columns=['col1', 'col2'], axis=1)
[python] DataFrame의 특정 열, 행 추출하기 ※ 특정 행 추출하기 df = df [ 숫자(이상) : 숫자(미만) ] print(df) import pandas as pd df = df[ :3]# 처음부터 ~ 3미만의 행까지 출력 df = df[1:3]# 2이상부터~ 3미만의 행까지 출력 ※ 특정 열 추출하기 (1) 열 내용만 ( 열이름 포함x ) df = df [ '자치구' , '이팝나무' ] print(df) (2) 열 전체 ( 열이름 + 열내용 ) df = df [ [ '자치구' , '이팝나무' ] ] print(df) ※ 여러조건을 적용한 행과 열 출력 ex) 행1의 값1, 값2, 값3(or : | )이고, 행2의 '부문1'에 속하고, (and : &) 행3의 소계, 총계(or : |)를 제외( != )한 값 출력하기. x =( ((df[ '..
[Python 오류해결법] Error tokenizing data Error tokenizing data. c error : expected ~~ 1. 오류의 원인 - 라인별 구분자로 분리된 단어의 개수가 다름. Pandas가 텍스트파일을 읽어서 데이터 프레임을 만들어줄때 각 라인을 구분자로 분리하였을때, 단어(빈 문자열 포함)의 개수가 같지 못한 상황에 발생하는 오류 2. 오류 확인해보기 with open(url) as df: lines = df.readlines() for line in lines[:2]: print(len(line.split('\t'))) >>> 1 1 12 (오류 내용이 알려주듯, 3번째 라인에서 단어의 개수가 12개 나옴) 3. 해결방법 구분자를 추가하여 각 라인별 구분자로 분리된 단어수를 맞춰주거나, 단어수가 맞지 않는 행을 지워주면 됨. -..
df.describe() : 데이터 요약을 위한 메서드 # df.describe() : 데이터 요약을 위한 메서드 DataFrame.describe(percentiles=None, include=None, exclude=None, datetime_is_numeric=False) - 기술 통계에는 NaN값을 제외 / 데이터 세트 분포의 중심 경향, 분산 및 모양을 요약하는 통계가 포함 - 숫자 및 개체 계열 DataFrame과 혼합 데이터 유형의 열 집합을 모두 분석 import pandas as pd df = pd.DataFrame({'a': [1,2,3,4,5], 'b': [2,4,6,8,10]}) df.describe() >>> Mean / Median / Mode Range Var / SD Kurtosis Skewness