{ "cells": [ { "cell_type": "markdown", "id": "195cdce2", "metadata": {}, "source": [ "## 판다스 데이터프레임" ] }, { "cell_type": "markdown", "id": "77fb00b3", "metadata": {}, "source": [ "## df = DataFrame ( data, [ index, columns, dtype ] )" ] }, { "cell_type": "markdown", "id": "37116db7", "metadata": {}, "source": [ "### 1) DataFrame( [ L1,L2,L3 ] ) : 리스트로 데이터프레임 생성\n", " #### L1,L2,L3 행단위 인식\n", "data = [\n", " [\"037730\", \"3R\", 1510],\n", " [\"036360\", \"3SOFT\", 1790],\n", " [\"005760\", \"ACTS\", 1185]\n", "]\n", "\n", "df = DataFrame(data=data)" ] }, { "cell_type": "markdown", "id": "4e365646", "metadata": {}, "source": [ "### 2) DataFrame(Dictionary) : 딕셔너리로 데이터프레임 생성\n", " ### keys -> columns\n", "data = {\n", " '종목코드': ['037730', '036360', '005760'],\n", " '종목명': ['3R', '3SOFT', 'ACTS'],\n", " '현재가': [1510, 1790, 1185]\n", "}\n", "\n", "df = DataFrame(data) " ] }, { "cell_type": "markdown", "id": "6a9e2dbe", "metadata": {}, "source": [ "### 3) DataFrame( [ D1,D2,D3 ] ) : 리스트와 딕셔너리로 데이터프레임 생성\n", " ### keys -> columns\n", "data = [\n", " {\"종목코드\": \"037730\", \"종목명\": \"3R\", \"현재가\": 1510},\n", " {\"종목코드\": \"036360\", \"종목명\": \"3SOFT\", \"현재가\": 1790},\n", " {\"종목코드\": \"005760\", \"종목명\": \"ACTS\", \"현재가\": 1185}\n", "]\n", " \n", "df = DataFrame(data)" ] }, { "cell_type": "code", "execution_count": 1, "id": "0def2975", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 종목코드 종목명 현재가 등락률\n", "0 037730 3R 1510 7.36\n", "1 036360 3SOFT 1790 1.65\n", "2 005670 ACTS 1185 1.28\n" ] }, { "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", "
종목코드종목명현재가등락률
00377303R15107.36
10363603SOFT17901.65
2005670ACTS11851.28
\n", "
" ], "text/plain": [ " 종목코드 종목명 현재가 등락률\n", "0 037730 3R 1510 7.36\n", "1 036360 3SOFT 1790 1.65\n", "2 005670 ACTS 1185 1.28" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from pandas import DataFrame\n", "\n", "data = [\n", " [\"037730\", \"3R\", 1510, 7.36],\n", " [\"036360\", \"3SOFT\", 1790, 1.65],\n", " [\"005670\", \"ACTS\", 1185, 1.28]\n", "]\n", "\n", "columns = [\"종목코드\", \"종목명\", \"현재가\", \"등락률\"]\n", "df = DataFrame(data=data, columns=columns)\n", "print(df)\n", "df" ] }, { "cell_type": "code", "execution_count": 2, "id": "6bf83fc2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 종목명 현재가 등락률\n", "종목코드 \n", "037730 3R 1510 7.36\n", "036360 3SOFT 1790 1.65\n", "005670 ACTS 1185 1.28\n" ] }, { "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", "
종목코드종목명현재가등락률
00377303R15107.36
10363603SOFT17901.65
2005670ACTS11851.28
\n", "
" ], "text/plain": [ " 종목코드 종목명 현재가 등락률\n", "0 037730 3R 1510 7.36\n", "1 036360 3SOFT 1790 1.65\n", "2 005670 ACTS 1185 1.28" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df1 = df.set_index(\"종목코드\") # 원본 df는 변경이 안됨\n", "print(df1)\n", "df" ] }, { "cell_type": "code", "execution_count": 3, "id": "e225bfbb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "종목코드\n" ] }, { "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", "
종목명현재가등락률
종목코드
0377303R15107.36
0363603SOFT17901.65
005670ACTS11851.28
\n", "
" ], "text/plain": [ " 종목명 현재가 등락률\n", "종목코드 \n", "037730 3R 1510 7.36\n", "036360 3SOFT 1790 1.65\n", "005670 ACTS 1185 1.28" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.set_index(\"종목코드\", inplace=True) #inplace=True 원본 데이터프레임 수정\n", "print(df.index.name)\n", "df" ] }, { "cell_type": "code", "execution_count": 4, "id": "8b9d5d09", "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", "
구분종목명현재가등락률
code
0377303R15107.36
0363603SOFT17901.65
005760ACTS11851.28
\n", "
" ], "text/plain": [ "구분 종목명 현재가 등락률\n", "code \n", "037730 3R 1510 7.36\n", "036360 3SOFT 1790 1.65\n", "005760 ACTS 1185 1.28" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from pandas import DataFrame\n", "\n", "data = [\n", " [\"3R\", 1510, 7.36],\n", " [\"3SOFT\", 1790, 1.65],\n", " [\"ACTS\", 1185, 1.28]\n", "]\n", "\n", "index = [\"037730\", \"036360\", \"005760\"]\n", "columns = [\"종목명\", \"현재가\", \"등락률\"]\n", "df = DataFrame(data=data, index=index, columns=columns)\n", "df.index.name = \"code\"\n", "df.columns.name = '구분'\n", "df" ] }, { "cell_type": "code", "execution_count": 5, "id": "d302363c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['037730', '036360', '005760'], dtype='object', name='code')" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.index" ] }, { "cell_type": "code", "execution_count": 6, "id": "fc66f808", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['종목명', '현재가', '등락률'], dtype='object', name='구분')" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.columns" ] }, { "cell_type": "markdown", "id": "9717ff29", "metadata": {}, "source": [ "## 데이터프레임 인덱싱" ] }, { "cell_type": "markdown", "id": "76c22c82", "metadata": {}, "source": [ "### 컬럼 인덱싱" ] }, { "cell_type": "code", "execution_count": 7, "id": "11beb7df", "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", "
종목명현재가등락률
0377303R15107.36
0363603SOFT17901.65
005760ACTS11851.28
\n", "
" ], "text/plain": [ " 종목명 현재가 등락률\n", "037730 3R 1510 7.36\n", "036360 3SOFT 1790 1.65\n", "005760 ACTS 1185 1.28" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from pandas import DataFrame\n", "\n", "data = [\n", " [\"3R\", 1510, 7.36],\n", " [\"3SOFT\", 1790, 1.65],\n", " [\"ACTS\", 1185, 1.28]\n", "]\n", "\n", "index = [\"037730\", \"036360\", \"005760\"]\n", "columns = [\"종목명\", \"현재가\", \"등락률\"]\n", "df = DataFrame(data=data, index=index, columns=columns)\n", "df" ] }, { "cell_type": "code", "execution_count": 8, "id": "89e513cb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Index(['037730', '036360', '005760'], dtype='object')\n", "[1510 1790 1185]\n" ] } ], "source": [ "s = df['현재가']\n", "print(s.index)\n", "print(s.values)" ] }, { "cell_type": "code", "execution_count": 9, "id": "912e97ea", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "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", "
현재가등락률
03773015107.36
03636017901.65
00576011851.28
\n", "
" ], "text/plain": [ " 현재가 등락률\n", "037730 1510 7.36\n", "036360 1790 1.65\n", "005760 1185 1.28" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "리스트 = [\"현재가\", \"등락률\"]\n", "d = df[리스트]\n", "print(type(d))\n", "d" ] }, { "cell_type": "markdown", "id": "b2c967d1", "metadata": {}, "source": [ "### 로우 인덱싱" ] }, { "cell_type": "code", "execution_count": 10, "id": "5f9a8a94", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "data": { "text/plain": [ "종목명 3R\n", "현재가 1510\n", "등락률 7.36\n", "Name: 037730, dtype: object" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d = df.loc[\"037730\"]\n", "print(type(d))\n", "d" ] }, { "cell_type": "code", "execution_count": 11, "id": "ab3e9724", "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", "
종목명현재가등락률
0377303R15107.36
0363603SOFT17901.65
\n", "
" ], "text/plain": [ " 종목명 현재가 등락률\n", "037730 3R 1510 7.36\n", "036360 3SOFT 1790 1.65" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dd =df.iloc[[0, 1]]\n", "dd" ] }, { "cell_type": "code", "execution_count": 12, "id": "458641bf", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "종목명 3R\n", "현재가 1510\n", "등락률 7.36\n", "Name: 037730, dtype: object\n", "종목명 ACTS\n", "현재가 1185\n", "등락률 1.28\n", "Name: 005760, dtype: object\n" ] } ], "source": [ "print(df.iloc[0])\n", "print(df.iloc[-1])" ] }, { "cell_type": "markdown", "id": "d8f22a1b", "metadata": {}, "source": [ "특정 값 가져오기" ] }, { "cell_type": "code", "execution_count": 13, "id": "205de7b8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1510\n", "1510\n", "1510\n", "1510\n", "1510\n", "1510\n", "1510\n", "1510\n", "1510\n", "1510\n", "1510\n", "1510\n", "1510\n", "1510\n" ] } ], "source": [ "# 행번호로 행 선택 후 시리즈 인덱싱 \n", "print(df.iloc[0].iloc[1]) \n", "print(df.iloc[0].loc[\"현재가\"]) \n", "\n", "print(df.loc[\"037730\"].iloc[1]) \n", "print(df.loc[\"037730\"].loc[\"현재가\"]) \n", "\n", "print(df.iloc[0,1]) \n", "print(df.loc[\"037730\", \"현재가\"])\n", "\n", "print(df.iloc[0][1]) \n", "print(df.iloc[0][\"현재가\"]) \n", "print(df.loc[\"037730\"][1]) \n", "print(df.loc[\"037730\"][\"현재가\"]) \n", "\n", "print(df['현재가'].iloc[0])\n", "print(df['현재가'].loc[\"037730\"])\n", "print(df['현재가'][\"037730\"])\n", "print(df['현재가'][0])" ] }, { "cell_type": "markdown", "id": "4667f3fc", "metadata": {}, "source": [ "특정 범위 가져오기" ] }, { "cell_type": "code", "execution_count": 14, "id": "e4630650", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 종목명 현재가 등락률\n", "037730 3R 1510 7.36\n", "036360 3SOFT 1790 1.65\n", " 종목명 현재가 등락률\n", "037730 3R 1510 7.36\n", "036360 3SOFT 1790 1.65\n" ] } ], "source": [ "print(df.loc[[\"037730\", \"036360\"]])\n", "print(df.iloc[[0, 1]])" ] }, { "cell_type": "code", "execution_count": 15, "id": "8974c045", "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", "
종목명현재가
0377303R1510
0363603SOFT1790
\n", "
" ], "text/plain": [ " 종목명 현재가\n", "037730 3R 1510\n", "036360 3SOFT 1790" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.loc[[\"037730\", \"036360\"], [\"종목명\", \"현재가\"]]" ] }, { "cell_type": "code", "execution_count": 16, "id": "0192c300", "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", "
종목명현재가
0377303R1510
0363603SOFT1790
\n", "
" ], "text/plain": [ " 종목명 현재가\n", "037730 3R 1510\n", "036360 3SOFT 1790" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.iloc[ [0, 1], [0, 1] ]" ] }, { "cell_type": "markdown", "id": "d84dc1e1", "metadata": {}, "source": [ "### 데이터프레임 필터링" ] }, { "cell_type": "code", "execution_count": 17, "id": "bca28045", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "037730 True\n", "036360 True\n", "005760 False\n", "Name: 현재가, dtype: bool\n" ] } ], "source": [ "cond = df['현재가'] >= 1400\n", "print(cond)" ] }, { "cell_type": "code", "execution_count": 18, "id": "d6574d68", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 종목명 현재가 등락률\n", "037730 3R 1510 7.36\n", "036360 3SOFT 1790 1.65\n" ] } ], "source": [ "df22=df.loc[cond] # df22 = df[cond] 가능\n", "print(df22)" ] }, { "cell_type": "code", "execution_count": 19, "id": "9d5a55ab", "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", "
종목명현재가등락률
0377303R15107.36
0363603SOFT17901.65
\n", "
" ], "text/plain": [ " 종목명 현재가 등락률\n", "037730 3R 1510 7.36\n", "036360 3SOFT 1790 1.65" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[cond]" ] }, { "cell_type": "code", "execution_count": 20, "id": "77cd22c4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "037730 1510\n", "036360 1790\n", "Name: 현재가, dtype: int64" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.loc[cond][\"현재가\"]" ] }, { "cell_type": "code", "execution_count": 21, "id": "1e4cb529", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "037730 1510\n", "036360 1790\n", "Name: 현재가, dtype: int64" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.loc[cond, \"현재가\"]" ] }, { "cell_type": "code", "execution_count": 22, "id": "b07f9b59", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 종목명 현재가 등락률\n", "037730 3R 1510 7.36\n" ] } ], "source": [ "cond = (df['현재가'] >= 1400) & (df['현재가'] < 1700)\n", "df24 = df.loc[cond]\n", "print(df24)" ] }, { "cell_type": "markdown", "id": "06d67f15", "metadata": {}, "source": [ "## column,row 추가 / 변경 / 삭제" ] }, { "cell_type": "markdown", "id": "a34f9fa8", "metadata": {}, "source": [ "컬럼 추가하기" ] }, { "cell_type": "code", "execution_count": 23, "id": "1efc8fd0", "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", "
종목명현재가등락률목표가
0377303R15107.361600
0363603SOFT17901.651600
005760ACTS11851.281600
\n", "
" ], "text/plain": [ " 종목명 현재가 등락률 목표가\n", "037730 3R 1510 7.36 1600\n", "036360 3SOFT 1790 1.65 1600\n", "005760 ACTS 1185 1.28 1600" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from pandas import Series\n", "\n", "s = Series(data=[1600, 1600, 1600], index=df.index)\n", "df['목표가'] = s\n", "df" ] }, { "cell_type": "code", "execution_count": 24, "id": "71a8cc83", "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", "
종목명현재가등락률목표가괴리율
0377303R15107.3616000.059603
0363603SOFT17901.651600-0.106145
005760ACTS11851.2816000.350211
\n", "
" ], "text/plain": [ " 종목명 현재가 등락률 목표가 괴리율\n", "037730 3R 1510 7.36 1600 0.059603\n", "036360 3SOFT 1790 1.65 1600 -0.106145\n", "005760 ACTS 1185 1.28 1600 0.350211" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[\"괴리율\"] = (df[\"목표가\"] - df[\"현재가\"]) / df['현재가']\n", "df" ] }, { "cell_type": "markdown", "id": "6b293243", "metadata": {}, "source": [ "로우 추가하기" ] }, { "cell_type": "code", "execution_count": 25, "id": "4eae0348", "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", " \n", " \n", " \n", " \n", "
종목명현재가등락률목표가괴리율
0377303R15107.3616000.059603
0363603SOFT17901.651600-0.106145
005760ACTS11851.2816000.350211
066570LG전자600003.84700000.166667
\n", "
" ], "text/plain": [ " 종목명 현재가 등락률 목표가 괴리율\n", "037730 3R 1510 7.36 1600 0.059603\n", "036360 3SOFT 1790 1.65 1600 -0.106145\n", "005760 ACTS 1185 1.28 1600 0.350211\n", "066570 LG전자 60000 3.84 70000 0.166667" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = Series(data=[\"LG전자\", 60000, 3.84,70000,0.166667], index=df.columns)\n", "df.loc[\"066570\"] = s # df.iloc[2] = s 도 가능\n", "df" ] }, { "cell_type": "markdown", "id": "10e4bc52", "metadata": {}, "source": [ "컬럼/로우 삭제하기(원Frame은 미변경됨)" ] }, { "cell_type": "code", "execution_count": 26, "id": "c4e8c511", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 종목명 현재가 등락률\n", "037730 3R 1510 7.36\n", "036360 3SOFT 1790 1.65\n", "005760 ACTS 1185 1.28\n", " 종목명 등락률\n", "037730 3R 7.36\n", "036360 3SOFT 1.65\n", "005760 ACTS 1.28\n" ] } ], "source": [ "from pandas import DataFrame\n", "\n", "data = [\n", " [\"3R\", 1510, 7.36],\n", " [\"3SOFT\", 1790, 1.65],\n", " [\"ACTS\", 1185, 1.28]\n", "]\n", "\n", "index = [\"037730\", \"036360\", \"005760\"]\n", "columns = [\"종목명\", \"현재가\", \"등락률\"]\n", "df = DataFrame(data=data, index=index, columns=columns)\n", "\n", "new_df = df.drop(\"현재가\", axis=1) # 방향에 주의\n", "print(df)\n", "print(new_df)" ] }, { "cell_type": "markdown", "id": "1c35741d", "metadata": {}, "source": [ "## 컬럼 레이블 변경" ] }, { "cell_type": "code", "execution_count": 27, "id": "7af6654a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Index(['종목명', '현재가', '등락률'], dtype='object')\n", "Index(['037730', '036360', '005760'], dtype='object')\n" ] } ], "source": [ "print(df.columns) # dtype : object\n", "print(df.index)" ] }, { "cell_type": "code", "execution_count": 28, "id": "c6da910b", "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", "
gubunnameclosefluctuation
code
aa3R15107.36
bb3SOFT17901.65
ccACTS11851.28
\n", "
" ], "text/plain": [ "gubun name close fluctuation\n", "code \n", "aa 3R 1510 7.36\n", "bb 3SOFT 1790 1.65\n", "cc ACTS 1185 1.28" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.columns = ['name', 'close', 'fluctuation']\n", "df.index = ['aa','bb','cc']\n", "df.index.name = 'code'\n", "df.columns.name = 'gubun'\n", "df" ] }, { "cell_type": "code", "execution_count": 29, "id": "3ceb7fe9", "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", "
구분종목명현재가등락률
종목코드
0377303R15107.36
0363603SOFT17901.65
005760ACTS11851.28
\n", "
" ], "text/plain": [ "구분 종목명 현재가 등락률\n", "종목코드 \n", "037730 3R 1510 7.36\n", "036360 3SOFT 1790 1.65\n", "005760 ACTS 1185 1.28" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# inplace 미지정시 원본Frame 미변경됨\n", "df.rename(columns={'name':'종목명', 'close':'현재가', 'fluctuation':'등락률'}, inplace=True)\n", "df.index = [\"037730\", \"036360\", \"005760\"]\n", "df.index.name = '종목코드'\n", "df.columns.name = '구분'\n", "df" ] }, { "cell_type": "markdown", "id": "1444bd63", "metadata": {}, "source": [ "## 로우 순서 변경" ] }, { "cell_type": "code", "execution_count": 30, "id": "c3409d72", "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", "
종목명현재가등락률
0377303R15107.36
0363603SOFT17901.65
005760ACTS11851.28
\n", "
" ], "text/plain": [ " 종목명 현재가 등락률\n", "037730 3R 1510 7.36\n", "036360 3SOFT 1790 1.65\n", "005760 ACTS 1185 1.28" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from pandas import DataFrame\n", "\n", "data = [\n", " [\"3R\", 1510, 7.36],\n", " [\"3SOFT\", 1790, 1.65],\n", " [\"ACTS\", 1185, 1.28]\n", "]\n", "\n", "index = [\"037730\", \"036360\", \"005760\"]\n", "columns = [\"종목명\", \"현재가\", \"등락률\"]\n", "df = DataFrame(data=data, index=index, columns=columns)\n", "df" ] }, { "cell_type": "code", "execution_count": 31, "id": "952a22a0", "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", "
종목명현재가등락률
0377303R15107.36
005760ACTS11851.28
0363603SOFT17901.65
001100000.00
\n", "
" ], "text/plain": [ " 종목명 현재가 등락률\n", "037730 3R 1510 7.36\n", "005760 ACTS 1185 1.28\n", "036360 3SOFT 1790 1.65\n", "001100 0 0 0.00" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 원Frame 미변경됨\n", "df1 = df.reindex([\"037730\", \"005760\",\"036360\",\"001100\"], fill_value=0)\n", "df1" ] }, { "cell_type": "code", "execution_count": 32, "id": "1bcb48ab", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 종목명 현재가 등락률\n", "005760 ACTS 1185 1.28\n", "036360 3SOFT 1790 1.65\n", "037730 3R 1510 7.36\n" ] } ], "source": [ "df2 = df.sort_index()\n", "print(df2)" ] }, { "cell_type": "markdown", "id": "6a7d1cb1", "metadata": {}, "source": [ "## 데이터 타입 변경" ] }, { "cell_type": "code", "execution_count": 54, "id": "d6da6910", "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", "
03/0203/0303/04
01,0001,1001,510
11,4101,4201,790
28509001,185
350100200
\n", "
" ], "text/plain": [ " 03/02 03/03 03/04\n", "0 1,000 1,100 1,510\n", "1 1,410 1,420 1,790\n", "2 850 900 1,185\n", "3 50 100 200" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from pandas import DataFrame\n", "\n", "data = [\n", " [\"1,000\", \"1,100\", '1,510'],\n", " [\"1,410\", \"1,420\", '1,790'],\n", " [\"850\", \"900\", '1,185'],\n", " [\"50\", \"100\", '200'],\n", "]\n", "columns = [\"03/02\", \"03/03\", \"03/04\"]\n", "df = DataFrame(data=data, columns=columns)\n", "df" ] }, { "cell_type": "code", "execution_count": 55, "id": "b87e7558", "metadata": {}, "outputs": [], "source": [ "def remove_comma(x):\n", " return int(x.replace(',', ''))" ] }, { "cell_type": "code", "execution_count": 56, "id": "cae55f49", "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", "
03/0203/0303/04
0100011001510
1141014201790
28509001185
350100200
\n", "
" ], "text/plain": [ " 03/02 03/03 03/04\n", "0 1000 1100 1510\n", "1 1410 1420 1790\n", "2 850 900 1185\n", "3 50 100 200" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "for i in range(len(df.index)):\n", " df.iloc[i] = df.iloc[i].map(remove_comma)\n", "df" ] }, { "cell_type": "code", "execution_count": 36, "id": "ce10c674", "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", "
03/0203/0303/04
01,0001,1001,510
11,4101,4201,790
28509001,185
\n", "
" ], "text/plain": [ " 03/02 03/03 03/04\n", "0 1,000 1,100 1,510\n", "1 1,410 1,420 1,790\n", "2 850 900 1,185" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from pandas import DataFrame\n", "\n", "data = [\n", " [\"1,000\", \"1,100\", '1,510'],\n", " [\"1,410\", \"1,420\", '1,790'],\n", " [\"850\", \"900\", '1,185'],\n", "]\n", "columns = [\"03/02\", \"03/03\", \"03/04\"]\n", "df = DataFrame(data=data, columns=columns)\n", "df" ] }, { "cell_type": "code", "execution_count": 37, "id": "6fad4ae7", "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", "
03/0203/0303/04
0100011001510
1141014201790
28509001185
\n", "
" ], "text/plain": [ " 03/02 03/03 03/04\n", "0 1000 1100 1510\n", "1 1410 1420 1790\n", "2 850 900 1185" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = df.applymap(remove_comma)\n", "df" ] }, { "cell_type": "code", "execution_count": 38, "id": "f2639310", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "03/02 int64\n", "03/03 int64\n", "03/04 int64\n", "dtype: object" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.dtypes" ] }, { "cell_type": "markdown", "id": "0c6c2a2f", "metadata": {}, "source": [ "## 컬럼 문자열 다루기" ] }, { "cell_type": "code", "execution_count": 39, "id": "059e6ec8", "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", "
cdnmclose
0A0603103S2,920
1A095570AJ네트웍스6,250
2A006840AK홀딩스29,700
3A054620APS홀딩스19,400
\n", "
" ], "text/plain": [ " cd nm close\n", "0 A060310 3S 2,920\n", "1 A095570 AJ네트웍스 6,250\n", "2 A006840 AK홀딩스 29,700\n", "3 A054620 APS홀딩스 19,400" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from pandas import DataFrame\n", "\n", "data = [\n", " {\"cd\":\"A060310\", \"nm\":\"3S\", \"close\":\"2,920\"},\n", " {\"cd\":\"A095570\", \"nm\":\"AJ네트웍스\", \"close\":\"6,250\"},\n", " {\"cd\":\"A006840\", \"nm\":\"AK홀딩스\", \"close\":\"29,700\"},\n", " {\"cd\":\"A054620\", \"nm\":\"APS홀딩스\", \"close\":\"19,400\"}\n", "]\n", "df = DataFrame(data=data)\n", "df" ] }, { "cell_type": "code", "execution_count": 40, "id": "b587c3e5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([['A060310', '3S', '2,920'],\n", " ['A095570', 'AJ네트웍스', '6,250'],\n", " ['A006840', 'AK홀딩스', '29,700'],\n", " ['A054620', 'APS홀딩스', '19,400']], dtype='\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", "
cdnmclose
0A0603103S2,920
1A095570AJ네트웍스6,250
2A006840AK홀딩스29,700
3A054620APS홀딩스19,400
\n", "" ], "text/plain": [ " cd nm close\n", "0 A060310 3S 2,920\n", "1 A095570 AJ네트웍스 6,250\n", "2 A006840 AK홀딩스 29,700\n", "3 A054620 APS홀딩스 19,400" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = DataFrame(arr,columns = ['cd','nm','close'])\n", "df" ] }, { "cell_type": "code", "execution_count": 42, "id": "fbcdaee9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "cd object\n", "nm object\n", "close object\n", "dtype: object" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.dtypes" ] }, { "cell_type": "code", "execution_count": 43, "id": "0f600d9c", "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", "
cdnmclose
00603103S2,920
1095570AJ네트웍스6,250
2006840AK홀딩스29,700
3054620APS홀딩스19,400
\n", "
" ], "text/plain": [ " cd nm close\n", "0 060310 3S 2,920\n", "1 095570 AJ네트웍스 6,250\n", "2 006840 AK홀딩스 29,700\n", "3 054620 APS홀딩스 19,400" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['cd'] = df['cd'].str[1:]\n", "df" ] }, { "cell_type": "code", "execution_count": 44, "id": "6a1abd58", "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", "
cdnmclose
00603103S2920
1095570AJ네트웍스6250
2006840AK홀딩스29700
3054620APS홀딩스19400
\n", "
" ], "text/plain": [ " cd nm close\n", "0 060310 3S 2920\n", "1 095570 AJ네트웍스 6250\n", "2 006840 AK홀딩스 29700\n", "3 054620 APS홀딩스 19400" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['close'] = df['close'].str.replace(',', '')\n", "df" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.9.0" }, "vscode": { "interpreter": { "hash": "beb106d4d92ebf7b6a8f552cff2d89ea5aedcac74701d8a2d39e6140e0181472" } } }, "nbformat": 4, "nbformat_minor": 5 }