at 단 하나의 값에만 접근할 수 있게 설계된 인덱서 loc 다량의 자료에 접근하기 위해 설계된 인덱서 팁 단 하나의 자료에 접근할 때는 at을 쓰는 것이 속도가 훨씬 빠르다. 패스트 인덱싱이라고도 한다. 예제 #### at 사용하기 def split_multicolumn(Series): df = pd.DataFrame(False, columns = (Series.dropna().str.split(';').str[0].unique()), index = Series.index) for idx, rep in Series.str.split(';').items(): if isinstance(rep, list): for one in rep: df.at[idx, one.strip()] ..
np.nan 값이 섞인 Series 자료형에 대해 특정 문자 값이 포함되었는지 사용할 수 있는 메서드로 contains()가 있습니다. 첫 인자로 포함된 것을 찾을 문자열을 넣어줍니다. na 키워드 인수를 활용하면 NaN 값을 대신할 값을 넣을 수 있습니다. _공식문서_str.contains _공식문서 where 예제 survey_df.where(~survey_df['Gender'].str.contains(';', na = False), np.nan, inplace = True) 코드 설명 survey_df의 Gender 컬럼 중 ;를 포함하는 행 찾기(na의 경우에는 False 처리) 앞 선 메소드의 True로 반환된 값들을 False로 전환(비트 연산자 ~) where로 ..
DataFrame 합성 Pandas는 두개 이상의 DataFrame을 하나로 합치는 데이터 병합(merge)이나 연결(concatenate)을 지원합니다. DataFrame merge() merge 함수는 두 데이터프레임의 공통 column 혹은 인덱스를 기준으로 두개의 테이블을 합친다. 이 때 기준이 되는 column, row의 데이터를 키(key)(PK)라고 합니다. df1 = pd.DataFrame({ '고객번호': [1001, 1002, 1003, 1004, 1005, 1006, 1007], '이름': ['둘리', '도우너', '또치', '길동', '희동', '마이콜', '영희'] }, columns=['고객번호', '이름']) df2 = pd.DataFrame({ '고객번호': [1001, 10..
DataFrame apply() 메서드 DataFrame에 대해 Function을 적용하고 싶다면 apply()함수를 활용하면 좋습니다. 이 메서드는 첫 인자로 함수를 필수값으로 받습니다. 경우에 따라 두번째 인자로 axis를 사용할 수 있습니다. axis 인자는 0이 default입니다. axis가 0 or 'index'인 경우 각 column에 대해 함수를 적용합니다. axis가 1 or 'columns'인 경우 각 row에 대해 함수를 적용합니다. 아래의 예제에서는 Numpy의 np.sort를 사용하여 적용해보았습니다. np.sqrt는 각 요소마다 적용되는 함수(universal function, ufunc)로 이 경우에는 np.sqrt(df)와 동일한 결과를 가져옵니다..
DataFrame 고급 인덱싱 DataFrame에서 특정한 데이터만 골라내는 것을 인덱싱이라고 합니다. 앞 절에서는 column에 대해 label, label list 인덱싱을, row에 대해 index(정수) 슬라이스 총 3가지 방식을 사용하여 데이터를 추출하는 방법을 살펴 봤습니다. 그런데 Pandas는 NumPy 배열과 같이 콤마(,)를 사용한 (row 인덱스, column 인덱스) 형식의 2차원 인덱싱을 지원하기 위해 다음과 같은 특별한 인덱서(indexer) 속성도 제공합니다. loc : label 값 기반의 2차원 인덱싱 iloc : 순서를 나타내는 정수 기반의 2차원 인덱싱 df.loc[row 인덱싱 값] df.loc[row 인덱싱 값, column 인덱싱 값]DataFrame 고급 인덱싱 ..
연습문제 기록 class Team: ### 클래스 속성 '''팀 객체를 만듭니다''' count = 0 order = [] def __init__(self, number, name = None, member = set()): ### 인스턴스 속성 self.number = number self.name = name self.__member = member Team.count += 1 Team.order.append(number) def add_member(self, name): '''팀원을 추가합니다''' # 해당 이름이 팀에 없을 경우 if name not in self.__member: self.__member.add..
DataFrame Class DataFrame은 Pandas의 주요 데이터 구조입니다. label된 row와 column, 두개의 축을 갖는 데이터 구조입니다. 산술 연산은 row와 column 모두 적용됩니다. Series 객체를 갖는 dictionary라고 생각하면 비슷합니다. 첫 인자로 data, 두 번째 인자로 index를 전달합니다. DataFrame은 각 column마다 자료형이 다를 수 있습니다. DataFrame 생성 Series가 1차원 벡터 데이터에 행방향 index(row index)를 붙인것이라면 DataFrame 클래스는 2차원 행렬 데이터에 index를 붙인 것과 형태가 비슷합니다. row와 column을 갖는 2차원이므로 각각의 행 데이터의 이름이 되는 행 index(row i..
Pandas(Panel Datas) 판다스는 주로 데이터 분석에 사용됩니다. 대부분의 데이터는 시계열(Series)이나 표(table)의 형태로 나타낼 수 있습니다. Pandas 패키지는 이러한 데이터를 다루기 위한 Series 클래스와 DataFrame 클래스를 제공합니다. 숫자 테이블과 시계열을 조작하기 위한 데이터 구조와 연산을 제공합니다. Pandas package import import pandas as pdSeries class Series 클래스는 Numpy에서 제공하는 1차원 배열과 그 모양이 비슷합니다. 하지만 Series data는 배열과 다르게 각 데이터의 의미를 표시하는 index를 붙일 수 있습니다. 데이터 자체는 값(value)라고 합니다. series = pd.Series([..
넘파이 배열 Numpy는 파이썬 내장 모듈이 아닙니다. 따라서 별도의 설치를 요구합니다. 하지만 아나콘다 환경 사용시 기본적으로 Numpy 패키지를 설치없이 사용할 수 있습니다. 숫자 데이터를 좀 더 쉽고 편리하게 다룰 수 있게 도와주는 패키지 숫자 데이터를 효과적으로 다룰 수 있기 때문에, 데이터 과학 및 데이터 분석에 많이 사용되는 파이썬 패키지 Numpy는 다차원 배열 자료구조 클래스인, ndarray 클래스를 지원하며, 벡터와 행렬을 사용하는 선형대수 계산에 주로 사용 import numpy as np 리스트가 아닌 넘파이 배열을 사용하는 이유 구조적으로 속도가 빠르고, 메모리를 더 적게 사용한다.(같은 종류의 데이터만 저장하기 때문에) Numpy Array VS Python List Numpy ..
객체지향(Object Oriented) 프로그래밍 객체지향 프로그래밍은 복잡한 문제를 잘게 나누어 객체로 만들고, 객체를 조합해서 문제를 해결합니다. 현실세계의 복잡한 문제를 처리하는데 유용하며 기능을 개선하고 발전시킬 때도 해당 클래스만 수정하면 되므로, 큰 프로젝트의 유지보수에도 매우 효율적입니다. 객체가 가진 데이터를 클래스의 속성(Attribute)이라 부르고 객체가 갖는 기능을 메서드(Method)라고 부릅니다. 클래스(Class) 클래스는 사용자, 정의 객체를 만들기 위한 주형이라고 생각하면 됩니다. 클래스 정의는 보통 클래스의 인스턴스를 대상으로 연산하는 메서드 정의를 포함하고 있습니다. # 클래스명으로 주로 PascalCase(UpperCamelCase)를 씁니다. class ClassNa..
변수의 범위(variable scope) - 전역 변수(global variable) 우리가 함수를 배우기 전까진 제일 바깥 영역인 전역 범위(global scope)에서 변수를 선언하고 활용했었습니다. 전역 범위에서 선언했기 때문에 그 변수를 스크립트 전체에서 접근 할 수 있었는데, 그 변수를 전역 변수(global variable)이라고 부릅니다. global_variable = "this is global world" print(f"global_variable in global_scope=> {global_variable}") print(hex(id(global_variable))) def local_world() print(f"global_variable in local_world=> {globa..