{ "cells": [ { "cell_type": "markdown", "id": "dbb17703-cc9d-429e-8414-cb1113ed116f", "metadata": { "tags": [] }, "source": [ "# **Pandas Tables**\n", "## **01 Load DataSet**" ] }, { "cell_type": "code", "execution_count": 15, "id": "1a7ce3f5-4cc1-4aca-a172-60232a847d58", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
회사명종목코드업종주요제품상장일결산월대표자명홈페이지지역
0DL000210기타 금융업지주회사1976-02-0212월전병욱http://www.dlholdings.co.kr서울특별시
1DRB동일004840고무제품 제조업고무벨트(V벨트,콘베이어벨트,평벨트),프라스틱제품 제조,판매1976-05-2112월류영식http://drbworld.com부산광역시
\n", "
" ], "text/plain": [ " 회사명 종목코드 업종 주요제품 상장일 \\\n", "0 DL 000210 기타 금융업 지주회사 1976-02-02 \n", "1 DRB동일 004840 고무제품 제조업 고무벨트(V벨트,콘베이어벨트,평벨트),프라스틱제품 제조,판매 1976-05-21 \n", "\n", " 결산월 대표자명 홈페이지 지역 \n", "0 12월 전병욱 http://www.dlholdings.co.kr 서울특별시 \n", "1 12월 류영식 http://drbworld.com 부산광역시 " ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas\n", "url = 'http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13'\n", "df = pandas.read_html(url, header=0)[0]\n", "df['종목코드'] = df['종목코드'].map(lambda x: f'{x:0>6}')\n", "df.head(2)" ] }, { "cell_type": "code", "execution_count": 16, "id": "f8880b68-9368-4c51-bc5f-20e257c04dc8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(164, 9)\n" ] }, { "data": { "text/plain": [ "회사명 0\n", "종목코드 0\n", "업종 0\n", "주요제품 18\n", "상장일 0\n", "결산월 0\n", "대표자명 0\n", "홈페이지 152\n", "지역 0\n", "dtype: int64" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 필드 1개라도 NaN 포함 필터링\n", "import numpy\n", "print(df[df.isin([numpy.nan, numpy.inf, -numpy.inf]).any(1)].shape) \n", "df.isnull().sum()" ] }, { "cell_type": "code", "execution_count": 17, "id": "2d9a16f4-975c-4388-8357-9df8d0a3e0dc", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
회사명종목코드업종상장일결산월대표자명지역
2497한국미라클피플사331660기타 화학제품 제조업2019-10-2812월이호경경기도
2498휴벡셀212310의료용 기기 제조업2016-07-2612월박정민, 허성규(각자대표)경기도
\n", "
" ], "text/plain": [ " 회사명 종목코드 업종 상장일 결산월 대표자명 지역\n", "2497 한국미라클피플사 331660 기타 화학제품 제조업 2019-10-28 12월 이호경 경기도\n", "2498 휴벡셀 212310 의료용 기기 제조업 2016-07-26 12월 박정민, 허성규(각자대표) 경기도" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 불필요한 필트 필터링\n", "df.drop(labels=['주요제품', '홈페이지'], axis=1, inplace=True)\n", "df.tail(2)" ] }, { "cell_type": "markdown", "id": "053695fe-0c05-4334-86be-087b20d39341", "metadata": { "tags": [] }, "source": [ "## **02 NaT Interpolation**\n", "- NaT : `datetime` 의 `numpy.nan` 객체\n", "- **Django ORM** 은`None` 사용 cf) **numpy.nan** 은 `nan` 텍스트를 저장한다\n", "\n", "```python\n", "# NaN 과 NaT 는 호환된다\n", "pandas.to_datetime(df['상장일']) -> string to `datetime`\n", "pandas.isnull(pandas.NaT) -> True, False\n", "```" ] }, { "cell_type": "code", "execution_count": 2, "id": "1b7673c0-8af2-45dd-af79-7c9149d2d043", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
회사명종목코드업종주요제품상장일결산월대표자명홈페이지지역
57윌비스008600생활용품 도매업스웨터,니트,셔츠 도매,제조/컴퓨터주변기기 무역,오파,임대NaT12월임찬혁(대표집행임원), 송주호(대표집행임원)http://www.willbes.com충청남도
1070메드팩토235980자연과학 및 공학 연구개발업항암제 신약개발NaT12월김성진http://www.medpacto.com서울특별시
\n", "
" ], "text/plain": [ " 회사명 종목코드 업종 주요제품 상장일 \\\n", "57 윌비스 008600 생활용품 도매업 스웨터,니트,셔츠 도매,제조/컴퓨터주변기기 무역,오파,임대 NaT \n", "1070 메드팩토 235980 자연과학 및 공학 연구개발업 항암제 신약개발 NaT \n", "\n", " 결산월 대표자명 홈페이지 지역 \n", "57 12월 임찬혁(대표집행임원), 송주호(대표집행임원) http://www.willbes.com 충청남도 \n", "1070 12월 김성진 http://www.medpacto.com 서울특별시 " ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy, random\n", "for _ in range(2): # 임의의 None 값 테이블에 추가하기\n", " df['상장일'][random.randint(1, len(df))] = numpy.nan\n", "df['상장일'] = pandas.to_datetime(df['상장일'])\n", "df[df['상장일'].isnull()]" ] }, { "cell_type": "code", "execution_count": 3, "id": "e0a19e94-1f25-4003-8c3a-33021a72fd14", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
회사명종목코드업종주요제품상장일결산월대표자명홈페이지지역
57윌비스008600생활용품 도매업스웨터,니트,셔츠 도매,제조/컴퓨터주변기기 무역,오파,임대1900-01-0112월임찬혁(대표집행임원), 송주호(대표집행임원)http://www.willbes.com충청남도
1070메드팩토235980자연과학 및 공학 연구개발업항암제 신약개발1900-01-0112월김성진http://www.medpacto.com서울특별시
\n", "
" ], "text/plain": [ " 회사명 종목코드 업종 주요제품 \\\n", "57 윌비스 008600 생활용품 도매업 스웨터,니트,셔츠 도매,제조/컴퓨터주변기기 무역,오파,임대 \n", "1070 메드팩토 235980 자연과학 및 공학 연구개발업 항암제 신약개발 \n", "\n", " 상장일 결산월 대표자명 홈페이지 지역 \n", "57 1900-01-01 12월 임찬혁(대표집행임원), 송주호(대표집행임원) http://www.willbes.com 충청남도 \n", "1070 1900-01-01 12월 김성진 http://www.medpacto.com 서울특별시 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import datetime\n", "index_list = df[df['상장일'].isnull()].index.tolist()\n", "\n", "df['상장일'] = list(\n", " map(lambda x: \n", " pandas.to_datetime(datetime.date(1900,1,1)).date() if (pandas.isnull(x)) \n", " else x, df['상장일'] ))\n", "df.loc[index_list,:]" ] }, { "cell_type": "markdown", "id": "9bfb5484-167e-4910-9e05-605767fb6c26", "metadata": { "tags": [] }, "source": [ "## **03 Filtering**\n", "정규식을 사용한 필터링" ] }, { "cell_type": "code", "execution_count": 4, "id": "188e4597-5d1a-4afe-80ec-a942478b181c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'컴퓨터 및 통신장비 수리업, 전기 및 통신 공사업, 전기 통신업, 가전제품 및 정보통신장비 소매업, 통신 및 방송 장비 제조업'" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "token = \"통신\"\n", "import re\n", "tokenizer = re.compile(f'{token}')\n", "tokens = list(filter(lambda x : len(\"\".join(tokenizer.findall(x))) != 0 , df['업종'].to_list()))\n", "\", \".join(set(tokens))" ] }, { "cell_type": "code", "execution_count": 5, "id": "e08edeb1-a17b-45e4-adc4-fed416ef3eb3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'기타 금융업'" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['업종'].to_list()[0]" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" } }, "nbformat": 4, "nbformat_minor": 5 }