{
"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",
" 0 | \n",
" DL | \n",
" 000210 | \n",
" 기타 금융업 | \n",
" 지주회사 | \n",
" 1976-02-02 | \n",
" 12월 | \n",
" 전병욱 | \n",
" http://www.dlholdings.co.kr | \n",
" 서울특별시 | \n",
"
\n",
" \n",
" 1 | \n",
" DRB동일 | \n",
" 004840 | \n",
" 고무제품 제조업 | \n",
" 고무벨트(V벨트,콘베이어벨트,평벨트),프라스틱제품 제조,판매 | \n",
" 1976-05-21 | \n",
" 12월 | \n",
" 류영식 | \n",
" http://drbworld.com | \n",
" 부산광역시 | \n",
"
\n",
" \n",
"
\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",
" 2497 | \n",
" 한국미라클피플사 | \n",
" 331660 | \n",
" 기타 화학제품 제조업 | \n",
" 2019-10-28 | \n",
" 12월 | \n",
" 이호경 | \n",
" 경기도 | \n",
"
\n",
" \n",
" 2498 | \n",
" 휴벡셀 | \n",
" 212310 | \n",
" 의료용 기기 제조업 | \n",
" 2016-07-26 | \n",
" 12월 | \n",
" 박정민, 허성규(각자대표) | \n",
" 경기도 | \n",
"
\n",
" \n",
"
\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",
" 57 | \n",
" 윌비스 | \n",
" 008600 | \n",
" 생활용품 도매업 | \n",
" 스웨터,니트,셔츠 도매,제조/컴퓨터주변기기 무역,오파,임대 | \n",
" NaT | \n",
" 12월 | \n",
" 임찬혁(대표집행임원), 송주호(대표집행임원) | \n",
" http://www.willbes.com | \n",
" 충청남도 | \n",
"
\n",
" \n",
" 1070 | \n",
" 메드팩토 | \n",
" 235980 | \n",
" 자연과학 및 공학 연구개발업 | \n",
" 항암제 신약개발 | \n",
" NaT | \n",
" 12월 | \n",
" 김성진 | \n",
" http://www.medpacto.com | \n",
" 서울특별시 | \n",
"
\n",
" \n",
"
\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",
" 57 | \n",
" 윌비스 | \n",
" 008600 | \n",
" 생활용품 도매업 | \n",
" 스웨터,니트,셔츠 도매,제조/컴퓨터주변기기 무역,오파,임대 | \n",
" 1900-01-01 | \n",
" 12월 | \n",
" 임찬혁(대표집행임원), 송주호(대표집행임원) | \n",
" http://www.willbes.com | \n",
" 충청남도 | \n",
"
\n",
" \n",
" 1070 | \n",
" 메드팩토 | \n",
" 235980 | \n",
" 자연과학 및 공학 연구개발업 | \n",
" 항암제 신약개발 | \n",
" 1900-01-01 | \n",
" 12월 | \n",
" 김성진 | \n",
" http://www.medpacto.com | \n",
" 서울특별시 | \n",
"
\n",
" \n",
"
\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
}