df = pd.read_csv('../data/gapminder.csv') => txt, csv, tsv 다 읽을 수 있음. sep만 제대로 설정하면. sep = '\t': 텍스트 파일의 열을 구분하는 방법. 디폴트는 ','header = None: header=0이면 1행을 열 이름으로 인식하고 그 아래부터 출력(그 위는 날린다). header=1이면 2행부터. default는 1행부터. names = [열이름, 열이름]: 열 이름 리스트를 따로 지정index_col = 0: 디폴트로 1열을 인덱스로 인식, 이미 다른 인덱스가 있을 때 이를 통해 지정. 0은 1열이 인덱스라는 것. dtype = {'ISBN':str, '주제분류번호':str}: 열 데이터 타입을 수동 지정low_memory = False: 효율적으로 메모리 사용 안하고 한거번에 처리. encoding = EUC-KR: 인코딩 지정. 인코딩으로 에러 뜰 때. , utf-8도 많이 씀. 전 세계 모든 문자 표현. keep_default_na: Na 값으로 원래 읽는 빈 문자열, NA, NULL 등을 누락값으로 읽지 않음. na_values = '-': 여기서 지정한 값을 NA로 읽음. 위에서 keep_default_na로 해도, 여기서 지정한 건 NA로. thousands = ',': 데이터에 1,000과 같이 천단위마다 쉼표가 포함되어 있으면, 그걸 제대로 읽을 수 있게. read_excel(): 엑셀 읽기sheet_name = '직종코드' 아래 있는 sheet 특정usecols = 'B, D, G, J, N': 엑셀에서 B D G J N 열만 들고온다. pd.read_json(str): Json 문자열 데이터 프레임으로pd.DataFrame(dict): Json 파이썬 객체를 데이터 프레임으로df = pd.DataFrame({
'name': ['a', 'b'], #칼럼이름:[각행 요소들]
'age': [1, 2]
}]
df = pd.DataFrame(
data = {'age': [1, 2]}, #데이터 = 칼럼이름:[각행 요소들]
index = ['a, 'b,], #인덱스 열 지정
columns = ['age'] #열 이름 지정
)
pd.read_xml(xml파일): xml 파일을 데이터 프레임으로pd.read_pickle(pickle파일)pd.read_spss(sav): sav는 통계 분석 소프트웨어 spss 전용 파일로 pyreadstat 패키지 설치하면 pandas통해 불러올 수 있음df.to_csv('디렉토리/파일명.csv'): CSV로index = False: 인덱스 빼고 저장 encoding='cp949': 인코딩 양식 지정. cp949는 한글 윈도우즈 환경에서 사용되는 인코딩. header=True: 첫 행에 열 이름을 헤더로 포함. df.to_excel('디렉토리/파일명.'): 엑셀로engine = : excel로 저장할 때 쓰는 엔진 지정. 디폴트는 openpxyl. xlsx(2007년 이후 엑셀 파일) 저장하는데 주로 사용df.to_json('디렉토리/.json'): json으로s = pd.Series([, , ]): 하나의 시리즈(column) 생성index = [ , ,]: 매개변수로 인덱스 이름 지정 가능s.index s.values: 하면 인덱스, values 나옴df = pd.DataFrame(): 데이터프레임 만들기data = : 받는 데이터. list, array, dictionary, series 등 가능. index = [ , ,]: 매개변수로 인덱스 이름 지정 가능. default는 None으로, 이 경우 정수형 인덱스 자동 생성. columns = [, , ]: 열 이름 지정 가능. default는 None으로, 이 경우 정수형 인덱스 자동 생성. dtype = [, , ]: 각 열 데이터 타입 지정. 디폴트는 None으로 DataFrame이 자동 유추. copy = 'False': 데이터를 복사하지 않고 참조할지, 복사할지. default는 False. df.head(숫자): 위에서 숫자 만큼의 행 데이터 추출. 디폴트는 5
df.tail(숫자): 아래에서 숫자 만큼의 행 데이터 추출. 디폴트는 5.
type(df): 타입 확인 가능.
df.shape: 행, 열이 각각 몇 개인지 튜플로 출력 =>[0] 행 개수, [1] 열 개수.
() 안붙은 건 그냥 속성 호출.
df.columns: 열 정보 출력. 리스트와 비슷하지만 다른 타입 객체. = []로 열 이름 집어넣기 가능.
df.index: 인덱스 정보 출력. 리스트와 비슷하지만 다른 타입 객체.
df.index = df[열]로 하면 특정 열을 인덱스로 사용 가능.
df.keys(): 속성이 아닌 메서드. index속성과 같은 역할.
df.values: 값 정보 출력.
df.dtypes: 각 열의 데이터 타입 출력. 문자형은 str이 아닌 object로 출력
df.info(): 열 이름, 비어있지 않은 값의 수, 칼럼별 데이터타입 한거번에 확인
df.copy(): 데이터프레임 복사본 만들기
df.astype({'열이름': 'int32', '열이름2':'float64'}): 열의 데이터타입 지정.
df.rename(columns={'before1':'after1', 'before2':'after2'}) => 열 이름을 바꾼다.
mapper, index, columns: 이름 변경에 사용될 매핑을 정의합니다. mapper는 함수 또는 딕셔너리가 될 수 있으며, axis를 기반으로 적용됩니다. index와 columns는 각각 행 인덱스와 열 이름의 변경을 위해 직접적으로 딕셔너리, 함수 형태로 제공될 수 있습니다.axis: 변경할 축을 지정합니다. 0 또는 'index'는 인덱스(행)에, 1 또는 'columns'는 열에 적용됩니다.copy: 기본적으로 True입니다. True인 경우, 원본 데이터는 변경되지 않고 복사본이 변경됩니다.inplace: True로 설정하면, 변경 사항을 데이터프레임에 바로 적용하고 아무 것도 반환하지 않습니다. 기본값은 False이며, 이 경우 변경된 새 데이터프레임을 반환합니다.level: 멀티인덱스를 사용하는 경우, 변경할 레벨을 지정합니다.errors: 이름 변경 시 오류 처리 방법을 지정합니다. 기본값은 'ignore'이며, 이 경우 매핑에서 찾을 수 없는 레이블에 대해 오류를 발생시키지 않습니다. 'raise'를 지정하면 매핑에서 레이블을 찾지 못할 경우 오류를 발생시킵니다.df.assign(**kwarg): 데이터프레임에 새 열 추가하거나, 기존 열 정해서, 새로운 데이터프레임 반환. 기존 데이터프레임 직접 변경X
df.assign(C=lambda x: x['A'] * 2) => ['A']라는 열만 *2한 값으로.
ebola = ebola.assign(month = ebola['date_dt'].dt.month, day = ebola['date_dt'].dt.day) => month, day 열 추가
df.set_index('열이름', inplace=True): 지정한 열을 인덱스로. inplace=True로 하면 원본 수정.
df.reset_index(): 기존 행 인덱스 제거하고, 인덱스를 데이터 열로 추가해서 인덱스 새로 부여.
df.reindex(리스트): 프레임의 인댁스와 컬럼을 새로운 인덱스와 컬럼으로 재배열. 새 인덱스나 컬럼이 기존 데이터프레임에 없으면 해당 위치는 NaN으로 채워진다.
index=: 새 행 인덱스로 쓸 리스트. 그냥 값만 넣으면 이걸로 들어감. columns=: 컬럼 레이블로 사용할 리스트method=: 인덱스 재배열시 사용할 보간 방식. ffill, bfill 등. fill_value: 재색인 과정에서 새로 추가되는 레이블에 채워넣을 기본값copy=True: 새 인덱스가 이전 인덱스와 동일해도 데이터 복사. &, |, ~: and, or, not. 불리언 배열 만드는데 and 등으로 조건 입력하면 안되고, 이렇게 사용. 그리고 각각 ()로 명확히 구분을 해줘서 연결해야 한다.
df['열이름'].isin(['값1', '값2']): 값을 비교할 때, isin을 사용하면 여러 값들을 집어넣을 수 있다.
df1.equals(df2): 2개가 같은지 확인. 같으면 True.
df['열이름'].unique(): 시리즈에서 고윳값(중복되지 않는 값)을 numpy 배열로 return
df['열이름'].sample(10): 열에서 샘플 10개를 무작위로 뽑는다. - 데이터프레임 내부에 접근하는 접근자들
df.count(): 각 열의 NaN이 아닌 개수의 센다.
df.query('sex == "male"'): DF 내에서 조건 만족하는 데이터 필터링. 이때 조건은 하나의 string으로 받는다. 즉, 'sex'=='male'이 아니라 'sex == "male"'이다. 이 안에 변수를 넣을거면 @을 변수 앞에 붙인다.
np.where(조건, , x, y): 배열 내에서 조건을 만족하는 요소의 위치(인덱스)를 찾는 데 사용.
np.where(df['열이름']>3): 그 열에서 3보다 큰 값만 선택
뒤의 x, y는 입력해도 되고 안해도 됨. 입력하면, 조건에 맞는 건 x로 바꾸고, 안맞는 건 y로 바꾼다.
np.where(welfare['sex'] == 9, np.nan, welfare['sex']): 9라는 이상치가 있으면 결측값으로 바꾸고, 아니면 기존의 값으로.
welfare['sex'] = np.where(welfare['sex'] == 1, 'male', 'female') sex가 1이면 male로, 아닌 건 female.로
지정자 사용 ex) df['열이름'].upper() => series에 .upper메서드를 쓸 수 없어서 안먹는다. string에 써야 하기 때문에.
.str: 그 열의 내부에 있는 string 요소에만 접근해서, 적용. df['열이름'].str.upper().dt: 그 열 내부에 있는 datetime에만 접근해서 적용. df['열이름'].dt.year.cat: 그 열 내부에 있는 범주형 데이터에 접근해서 적용. df['열이름'].cat.add_categories(new_categories).sparse, .plot, .array도 있다. to_dict(): 데이터프레임에 적용하면 {열이름: {인덱스:값, 인덱스:값}, 열이름:{인덱스:값, 인덱스:값}} 형태의 딕셔너리가 된다. => set_index랑 같이 쓰면, 인덱스를 원하는 값으로 지정 가능