데이터 분석

금융데이터 분석을 위한 Pandas 기초공부(2)

남참새 2022. 6. 8. 19:35
728x90
반응형

아래의 예시 자료는 모두 company.csv파일을 기반으로 작성된 것!!

 

1, loc함수를 이용해서 Data Frame을 만들고자 할때(원하는 데이터를 뽑고자 할 때)

설정 : 변수명.loc[시작 인덱스행:끝  인덱스 행] -> 시작행에서부터 끝행까지의 원하는 Data Frame 추출 가능

위의 것도 하나의 Data Frame이기 때문에 변수명.loc[시작행:끝행].head() or tail()로 표현 가능

 

loc함수를 이용하여 특정 행의 특정 열에 대한 Data Frame을 만들고자 할 때

ids = [1, 2, 4, 1950]

company.loc[ids][['종목코드', '회사명', '분류']]

또는 

ids = [1, 2, 4, 1950]

colums = ['종목코드', '회사명', '분류'] 

company.loc[ids][columns]

또는

ids = [1, 2, 4, 1950]

colums = ['종목코드', '회사명', '분류']

company.loc[ids, columns]

즉, loc함수를 이용하여 index와 column으로 접근이 동시에 가능함

 

코스피에 상장된 종목들만 따로 뽑아보기

company

company['분류'] == '코스피'

company[company['분류'] == '코스피']

columns = ['분류', '종목코드', '회사명']

company[company[분류'] == '코스피'][columns]

 

특정 종목명에 대해 찾기(삼성전자)

company

company['종목명'] == '삼성전자'

company[company['종목명'] == '삼성전자']

 

2. iloc함수를 이용하기(iloc함수란 index location의 줄임말)

company.iloc[0] -> 인덱스를 활용하여 데이터 가져오기 (해당 행을 시리즈 형태로 가지고 옴)

company.iloc[0].values -> numpy의 array형으로 아래와 같이 데이터를 가지고 올 수 있음

company.iloc[0].values[0]

3. 결측치 값 처리하기

결측치를 처리하는 것은 데이터 전처리(Pre-processing)하는 과정 중에 중요한 과정이라고 볼 수 있음

company['종목코드'].isnull()

company[company['종목코드'].isnull()]

company['종목코드'].notnull()

company.dropna() -> 출력 : null 값을 제외한 나머지 데이터들이 출력 됨

 

4. isin함수를 이용하여 column에서 특정 값을 가지는 데이터를 뽑아내기

예시) 삼성전자 또는 한화라는 회사명을 가진 데이터들에 대해서 뽑아보기

company['회사명'].isin(['삼성전자', '한화'])

company[company['회사명'].isin(['삼성전자', '한화'])]

5. str.contains함수를 이용하여 특정 키워드를 가진 데이터를 추출하기

예시)한화라는 키워드를 가진 모든 종목리스트 데이터를 뽑으려고 할 때

주의!! 사전에 데이터 항목 중에 null값이 있는지 확인한 후 dropna()를 통해 null값을 제거 후 특정 키워드를 가진 문자열 데이터를 추출한다. null값이 있는 상태에서 데이터 추출 시 오류 발생함.

company.dropna()

company = company.dropna()

company['회사명'].str.contains('한화')

company[company['회사명'].str.contains('한화')]

 

 

 

Pandas에서 object type은 파이썬에서 문자열과 같은 타입이라고 생각하면 됨

따라서 날짜간에 시간에 따른 비교가 불가능하다는 것을 뜻함

따라서 위의 series형태 데이터들의 데이터 타입을 datetime의 데이터 타입으로 변경을 해야함

 

문제

1. 업종기타 금융업이고

2. 코스닥에 상장되어 있으며

3. 2015-1-1 이후에 상장된 기업정보만 필터링할 수 있습니다.

 

 

상장일 컬럼을 datetime의 데이터 타입으로 변경을 하는 방법은 아래와 같이 두가지 방법이 있음

1)company.csv파일을 읽어올 때 '상장일' 컬럼을 모두 datetime형태로 읽어오는 파라미터를 사용하는 것(parse_dates)

company = pd.read_csv('company.csv', parse_dates = ['상장일'])

company

financial_corporate = company[company['업종'] == '기타 금융업']

kosdaq_financial_corporate = financial_corporate[financial_corporate['분류'] == '코스닥']

 

2)직접 '상장일'컬럼을 datetime형태로 바꿔주는 함수를 사용하는 방법(pd.to_datetime)

company = pd.read_csv('company.csv')

company

company['상장일'] = pd.to_datetime(company['상장일']) : 상장일 컬럼을 datetime형태로 변경한 후 company DataFrame의 '상장일'컬럼에 넣어준다는 뜻

financial_corporate = company[company['업종'] == '기타 금융업']

kosdaq_financial_corporate = financial_corporate[financial_corporate['분류'] == '코스닥']

 

3. 2015-1-1 이후에 상장된 기업정보만 필터링할 수 있습니다.

kosdaq_financial_corporate['상장일'] > pd.Timestamp(2015, 1, 1)

kosdaq_financial_corporate[kosdaq_financial_corporate['상장일'] > pd.Timestamp(2015, 1, 1)]