{
"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",
" 0 | \n",
" 037730 | \n",
" 3R | \n",
" 1510 | \n",
" 7.36 | \n",
"
\n",
" \n",
" 1 | \n",
" 036360 | \n",
" 3SOFT | \n",
" 1790 | \n",
" 1.65 | \n",
"
\n",
" \n",
" 2 | \n",
" 005670 | \n",
" ACTS | \n",
" 1185 | \n",
" 1.28 | \n",
"
\n",
" \n",
"
\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",
" 0 | \n",
" 037730 | \n",
" 3R | \n",
" 1510 | \n",
" 7.36 | \n",
"
\n",
" \n",
" 1 | \n",
" 036360 | \n",
" 3SOFT | \n",
" 1790 | \n",
" 1.65 | \n",
"
\n",
" \n",
" 2 | \n",
" 005670 | \n",
" ACTS | \n",
" 1185 | \n",
" 1.28 | \n",
"
\n",
" \n",
"
\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",
" 037730 | \n",
" 3R | \n",
" 1510 | \n",
" 7.36 | \n",
"
\n",
" \n",
" 036360 | \n",
" 3SOFT | \n",
" 1790 | \n",
" 1.65 | \n",
"
\n",
" \n",
" 005670 | \n",
" ACTS | \n",
" 1185 | \n",
" 1.28 | \n",
"
\n",
" \n",
"
\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",
" code | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 037730 | \n",
" 3R | \n",
" 1510 | \n",
" 7.36 | \n",
"
\n",
" \n",
" 036360 | \n",
" 3SOFT | \n",
" 1790 | \n",
" 1.65 | \n",
"
\n",
" \n",
" 005760 | \n",
" ACTS | \n",
" 1185 | \n",
" 1.28 | \n",
"
\n",
" \n",
"
\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",
" 037730 | \n",
" 3R | \n",
" 1510 | \n",
" 7.36 | \n",
"
\n",
" \n",
" 036360 | \n",
" 3SOFT | \n",
" 1790 | \n",
" 1.65 | \n",
"
\n",
" \n",
" 005760 | \n",
" ACTS | \n",
" 1185 | \n",
" 1.28 | \n",
"
\n",
" \n",
"
\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",
" 037730 | \n",
" 1510 | \n",
" 7.36 | \n",
"
\n",
" \n",
" 036360 | \n",
" 1790 | \n",
" 1.65 | \n",
"
\n",
" \n",
" 005760 | \n",
" 1185 | \n",
" 1.28 | \n",
"
\n",
" \n",
"
\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",
" 037730 | \n",
" 3R | \n",
" 1510 | \n",
" 7.36 | \n",
"
\n",
" \n",
" 036360 | \n",
" 3SOFT | \n",
" 1790 | \n",
" 1.65 | \n",
"
\n",
" \n",
"
\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",
" 037730 | \n",
" 3R | \n",
" 1510 | \n",
"
\n",
" \n",
" 036360 | \n",
" 3SOFT | \n",
" 1790 | \n",
"
\n",
" \n",
"
\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",
" 037730 | \n",
" 3R | \n",
" 1510 | \n",
"
\n",
" \n",
" 036360 | \n",
" 3SOFT | \n",
" 1790 | \n",
"
\n",
" \n",
"
\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",
" 037730 | \n",
" 3R | \n",
" 1510 | \n",
" 7.36 | \n",
"
\n",
" \n",
" 036360 | \n",
" 3SOFT | \n",
" 1790 | \n",
" 1.65 | \n",
"
\n",
" \n",
"
\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",
" 037730 | \n",
" 3R | \n",
" 1510 | \n",
" 7.36 | \n",
" 1600 | \n",
"
\n",
" \n",
" 036360 | \n",
" 3SOFT | \n",
" 1790 | \n",
" 1.65 | \n",
" 1600 | \n",
"
\n",
" \n",
" 005760 | \n",
" ACTS | \n",
" 1185 | \n",
" 1.28 | \n",
" 1600 | \n",
"
\n",
" \n",
"
\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",
" 037730 | \n",
" 3R | \n",
" 1510 | \n",
" 7.36 | \n",
" 1600 | \n",
" 0.059603 | \n",
"
\n",
" \n",
" 036360 | \n",
" 3SOFT | \n",
" 1790 | \n",
" 1.65 | \n",
" 1600 | \n",
" -0.106145 | \n",
"
\n",
" \n",
" 005760 | \n",
" ACTS | \n",
" 1185 | \n",
" 1.28 | \n",
" 1600 | \n",
" 0.350211 | \n",
"
\n",
" \n",
"
\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",
" 037730 | \n",
" 3R | \n",
" 1510 | \n",
" 7.36 | \n",
" 1600 | \n",
" 0.059603 | \n",
"
\n",
" \n",
" 036360 | \n",
" 3SOFT | \n",
" 1790 | \n",
" 1.65 | \n",
" 1600 | \n",
" -0.106145 | \n",
"
\n",
" \n",
" 005760 | \n",
" ACTS | \n",
" 1185 | \n",
" 1.28 | \n",
" 1600 | \n",
" 0.350211 | \n",
"
\n",
" \n",
" 066570 | \n",
" LG전자 | \n",
" 60000 | \n",
" 3.84 | \n",
" 70000 | \n",
" 0.166667 | \n",
"
\n",
" \n",
"
\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",
" gubun | \n",
" name | \n",
" close | \n",
" fluctuation | \n",
"
\n",
" \n",
" code | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" aa | \n",
" 3R | \n",
" 1510 | \n",
" 7.36 | \n",
"
\n",
" \n",
" bb | \n",
" 3SOFT | \n",
" 1790 | \n",
" 1.65 | \n",
"
\n",
" \n",
" cc | \n",
" ACTS | \n",
" 1185 | \n",
" 1.28 | \n",
"
\n",
" \n",
"
\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",
" 037730 | \n",
" 3R | \n",
" 1510 | \n",
" 7.36 | \n",
"
\n",
" \n",
" 036360 | \n",
" 3SOFT | \n",
" 1790 | \n",
" 1.65 | \n",
"
\n",
" \n",
" 005760 | \n",
" ACTS | \n",
" 1185 | \n",
" 1.28 | \n",
"
\n",
" \n",
"
\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",
" 037730 | \n",
" 3R | \n",
" 1510 | \n",
" 7.36 | \n",
"
\n",
" \n",
" 036360 | \n",
" 3SOFT | \n",
" 1790 | \n",
" 1.65 | \n",
"
\n",
" \n",
" 005760 | \n",
" ACTS | \n",
" 1185 | \n",
" 1.28 | \n",
"
\n",
" \n",
"
\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",
" 037730 | \n",
" 3R | \n",
" 1510 | \n",
" 7.36 | \n",
"
\n",
" \n",
" 005760 | \n",
" ACTS | \n",
" 1185 | \n",
" 1.28 | \n",
"
\n",
" \n",
" 036360 | \n",
" 3SOFT | \n",
" 1790 | \n",
" 1.65 | \n",
"
\n",
" \n",
" 001100 | \n",
" 0 | \n",
" 0 | \n",
" 0.00 | \n",
"
\n",
" \n",
"
\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",
" 03/02 | \n",
" 03/03 | \n",
" 03/04 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1,000 | \n",
" 1,100 | \n",
" 1,510 | \n",
"
\n",
" \n",
" 1 | \n",
" 1,410 | \n",
" 1,420 | \n",
" 1,790 | \n",
"
\n",
" \n",
" 2 | \n",
" 850 | \n",
" 900 | \n",
" 1,185 | \n",
"
\n",
" \n",
" 3 | \n",
" 50 | \n",
" 100 | \n",
" 200 | \n",
"
\n",
" \n",
"
\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",
" 03/02 | \n",
" 03/03 | \n",
" 03/04 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1000 | \n",
" 1100 | \n",
" 1510 | \n",
"
\n",
" \n",
" 1 | \n",
" 1410 | \n",
" 1420 | \n",
" 1790 | \n",
"
\n",
" \n",
" 2 | \n",
" 850 | \n",
" 900 | \n",
" 1185 | \n",
"
\n",
" \n",
" 3 | \n",
" 50 | \n",
" 100 | \n",
" 200 | \n",
"
\n",
" \n",
"
\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",
" 03/02 | \n",
" 03/03 | \n",
" 03/04 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1,000 | \n",
" 1,100 | \n",
" 1,510 | \n",
"
\n",
" \n",
" 1 | \n",
" 1,410 | \n",
" 1,420 | \n",
" 1,790 | \n",
"
\n",
" \n",
" 2 | \n",
" 850 | \n",
" 900 | \n",
" 1,185 | \n",
"
\n",
" \n",
"
\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",
" 03/02 | \n",
" 03/03 | \n",
" 03/04 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1000 | \n",
" 1100 | \n",
" 1510 | \n",
"
\n",
" \n",
" 1 | \n",
" 1410 | \n",
" 1420 | \n",
" 1790 | \n",
"
\n",
" \n",
" 2 | \n",
" 850 | \n",
" 900 | \n",
" 1185 | \n",
"
\n",
" \n",
"
\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",
" cd | \n",
" nm | \n",
" close | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" A060310 | \n",
" 3S | \n",
" 2,920 | \n",
"
\n",
" \n",
" 1 | \n",
" A095570 | \n",
" AJ네트웍스 | \n",
" 6,250 | \n",
"
\n",
" \n",
" 2 | \n",
" A006840 | \n",
" AK홀딩스 | \n",
" 29,700 | \n",
"
\n",
" \n",
" 3 | \n",
" A054620 | \n",
" APS홀딩스 | \n",
" 19,400 | \n",
"
\n",
" \n",
"
\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",
" cd | \n",
" nm | \n",
" close | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" A060310 | \n",
" 3S | \n",
" 2,920 | \n",
"
\n",
" \n",
" 1 | \n",
" A095570 | \n",
" AJ네트웍스 | \n",
" 6,250 | \n",
"
\n",
" \n",
" 2 | \n",
" A006840 | \n",
" AK홀딩스 | \n",
" 29,700 | \n",
"
\n",
" \n",
" 3 | \n",
" A054620 | \n",
" APS홀딩스 | \n",
" 19,400 | \n",
"
\n",
" \n",
"
\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",
" cd | \n",
" nm | \n",
" close | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 060310 | \n",
" 3S | \n",
" 2,920 | \n",
"
\n",
" \n",
" 1 | \n",
" 095570 | \n",
" AJ네트웍스 | \n",
" 6,250 | \n",
"
\n",
" \n",
" 2 | \n",
" 006840 | \n",
" AK홀딩스 | \n",
" 29,700 | \n",
"
\n",
" \n",
" 3 | \n",
" 054620 | \n",
" APS홀딩스 | \n",
" 19,400 | \n",
"
\n",
" \n",
"
\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",
" cd | \n",
" nm | \n",
" close | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 060310 | \n",
" 3S | \n",
" 2920 | \n",
"
\n",
" \n",
" 1 | \n",
" 095570 | \n",
" AJ네트웍스 | \n",
" 6250 | \n",
"
\n",
" \n",
" 2 | \n",
" 006840 | \n",
" AK홀딩스 | \n",
" 29700 | \n",
"
\n",
" \n",
" 3 | \n",
" 054620 | \n",
" APS홀딩스 | \n",
" 19400 | \n",
"
\n",
" \n",
"
\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
}