Skip to content

Instantly share code, notes, and snippets.

@self-methods
Created January 10, 2021 12:34
Show Gist options
  • Save self-methods/e7f5931d8ee75e7ef530ce20d9c4d539 to your computer and use it in GitHub Desktop.
Save self-methods/e7f5931d8ee75e7ef530ce20d9c4d539 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 【pandas】groupbyでデータフレームをまとめる方法"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## サンプルデータの作成"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"from pandas import DataFrame\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"df = DataFrame({'C1':[\"A\",\"B\",\"B\",\"C\",\"C\"],\n",
" 'C2':[\"TKO\",\"HKD\",\"OSK\",\"CBA\",\"TKO\"],\n",
" 'data1':np.random.randn(5),\n",
" 'data2':np.random.randn(5)})"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>C1</th>\n",
" <th>C2</th>\n",
" <th>data1</th>\n",
" <th>data2</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>A</td>\n",
" <td>TKO</td>\n",
" <td>1.360657</td>\n",
" <td>1.484234</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>B</td>\n",
" <td>HKD</td>\n",
" <td>0.468975</td>\n",
" <td>-0.385433</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>B</td>\n",
" <td>OSK</td>\n",
" <td>2.086522</td>\n",
" <td>0.752493</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>C</td>\n",
" <td>CBA</td>\n",
" <td>0.233854</td>\n",
" <td>-0.593259</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>C</td>\n",
" <td>TKO</td>\n",
" <td>-0.422905</td>\n",
" <td>-1.216815</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" C1 C2 data1 data2\n",
"0 A TKO 1.360657 1.484234\n",
"1 B HKD 0.468975 -0.385433\n",
"2 B OSK 2.086522 0.752493\n",
"3 C CBA 0.233854 -0.593259\n",
"4 C TKO -0.422905 -1.216815"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## groupbyの使い方"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 基本的な使い方"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<pandas.core.groupby.generic.DataFrameGroupBy object at 0x000002246D4D6D60>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"g1 = df.groupby(\"C1\")\n",
"g1"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>data1</th>\n",
" <th>data2</th>\n",
" </tr>\n",
" <tr>\n",
" <th>C1</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>A</th>\n",
" <td>1.360657</td>\n",
" <td>1.484234</td>\n",
" </tr>\n",
" <tr>\n",
" <th>B</th>\n",
" <td>2.555497</td>\n",
" <td>0.367061</td>\n",
" </tr>\n",
" <tr>\n",
" <th>C</th>\n",
" <td>-0.189052</td>\n",
" <td>-1.810074</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" data1 data2\n",
"C1 \n",
"A 1.360657 1.484234\n",
"B 2.555497 0.367061\n",
"C -0.189052 -1.810074"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"g1.sum()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x2246d54c670>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"g1.sum().plot(kind=\"barh\")\n",
"plt.legend(loc=\"lower right\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 複数のグループ"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th></th>\n",
" <th>data1</th>\n",
" <th>data2</th>\n",
" </tr>\n",
" <tr>\n",
" <th>C1</th>\n",
" <th>C2</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>A</th>\n",
" <th>TKO</th>\n",
" <td>1.360657</td>\n",
" <td>1.484234</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">B</th>\n",
" <th>HKD</th>\n",
" <td>0.468975</td>\n",
" <td>-0.385433</td>\n",
" </tr>\n",
" <tr>\n",
" <th>OSK</th>\n",
" <td>2.086522</td>\n",
" <td>0.752493</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">C</th>\n",
" <th>CBA</th>\n",
" <td>0.233854</td>\n",
" <td>-0.593259</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TKO</th>\n",
" <td>-0.422905</td>\n",
" <td>-1.216815</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" data1 data2\n",
"C1 C2 \n",
"A TKO 1.360657 1.484234\n",
"B HKD 0.468975 -0.385433\n",
" OSK 2.086522 0.752493\n",
"C CBA 0.233854 -0.593259\n",
" TKO -0.422905 -1.216815"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"g2 = df.groupby([\"C1\",\"C2\"])\n",
"g2.sum()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:ylabel='C1,C2'>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"g2.sum().plot(kind=\"barh\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### カラムの範囲の指定方法"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th></th>\n",
" <th>data1</th>\n",
" </tr>\n",
" <tr>\n",
" <th>C1</th>\n",
" <th>C2</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>A</th>\n",
" <th>TKO</th>\n",
" <td>1.360657</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">B</th>\n",
" <th>HKD</th>\n",
" <td>0.468975</td>\n",
" </tr>\n",
" <tr>\n",
" <th>OSK</th>\n",
" <td>2.086522</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">C</th>\n",
" <th>CBA</th>\n",
" <td>0.233854</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TKO</th>\n",
" <td>-0.422905</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" data1\n",
"C1 C2 \n",
"A TKO 1.360657\n",
"B HKD 0.468975\n",
" OSK 2.086522\n",
"C CBA 0.233854\n",
" TKO -0.422905"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"g3 = df.groupby([\"C1\",\"C2\"])[['data1']]\n",
"g3.mean()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### インデックスにしない場合\n",
"引数としてas_index=Falseとする"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>C1</th>\n",
" <th>C2</th>\n",
" <th>data1</th>\n",
" <th>data2</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>A</td>\n",
" <td>TKO</td>\n",
" <td>1.360657</td>\n",
" <td>1.484234</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>B</td>\n",
" <td>HKD</td>\n",
" <td>0.468975</td>\n",
" <td>-0.385433</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>B</td>\n",
" <td>OSK</td>\n",
" <td>2.086522</td>\n",
" <td>0.752493</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>C</td>\n",
" <td>CBA</td>\n",
" <td>0.233854</td>\n",
" <td>-0.593259</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>C</td>\n",
" <td>TKO</td>\n",
" <td>-0.422905</td>\n",
" <td>-1.216815</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" C1 C2 data1 data2\n",
"0 A TKO 1.360657 1.484234\n",
"1 B HKD 0.468975 -0.385433\n",
"2 B OSK 2.086522 0.752493\n",
"3 C CBA 0.233854 -0.593259\n",
"4 C TKO -0.422905 -1.216815"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"g4 = df.groupby([\"C1\",\"C2\"], as_index=False)\n",
"g4.mean()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 組み込み関数の種類"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<table>\n",
" <tbody>\n",
" <tr>\n",
" <td>関数</td>\n",
" <td>説明</td>\n",
" </tr>\n",
" <tr>\n",
" <td>mean()</td>\n",
" <td>平均</td>\n",
" </tr>\n",
" <tr>\n",
" <td>sum()</td>\n",
" <td>合計</td>\n",
" </tr>\n",
" <tr>\n",
" <td>size()</td>\n",
" <td>グループの大きさ</td>\n",
" </tr>\n",
" <tr>\n",
" <td>count()</td>\n",
" <td>グループのデータ個数</td>\n",
" </tr>\n",
" <tr>\n",
" <td>std()</td>\n",
" <td>標準偏差</td>\n",
" </tr>\n",
" <tr>\n",
" <td>describe()</td>\n",
" <td>グループ内の統計量</td>\n",
" </tr>\n",
" <tr>\n",
" <td>first()</td>\n",
" <td>グループ内の先頭</td>\n",
" </tr>\n",
" <tr>\n",
" <td>last()</td>\n",
" <td>グループ内の最後</td>\n",
" </tr>\n",
" <td>min()</td>\n",
" <td>最小値</td>\n",
" </tr>\n",
" <tr>\n",
" <td>max()</td>\n",
" <td>最大値</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 任意の処理をする"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th></th>\n",
" <th>data1</th>\n",
" <th>data2</th>\n",
" </tr>\n",
" <tr>\n",
" <th>C1</th>\n",
" <th>C2</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>A</th>\n",
" <th>TKO</th>\n",
" <td>1.360657</td>\n",
" <td>1.484234</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">B</th>\n",
" <th>HKD</th>\n",
" <td>0.468975</td>\n",
" <td>-0.385433</td>\n",
" </tr>\n",
" <tr>\n",
" <th>OSK</th>\n",
" <td>2.086522</td>\n",
" <td>0.752493</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">C</th>\n",
" <th>CBA</th>\n",
" <td>0.233854</td>\n",
" <td>-0.593259</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TKO</th>\n",
" <td>-0.422905</td>\n",
" <td>-1.216815</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" data1 data2\n",
"C1 C2 \n",
"A TKO 1.360657 1.484234\n",
"B HKD 0.468975 -0.385433\n",
" OSK 2.086522 0.752493\n",
"C CBA 0.233854 -0.593259\n",
" TKO -0.422905 -1.216815"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"g5 = df.groupby([\"C1\",\"C2\"]).agg(np.max)\n",
"g5"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th></th>\n",
" <th colspan=\"2\" halign=\"left\">data1</th>\n",
" <th colspan=\"2\" halign=\"left\">data2</th>\n",
" </tr>\n",
" <tr>\n",
" <th></th>\n",
" <th></th>\n",
" <th>amax</th>\n",
" <th>amin</th>\n",
" <th>amax</th>\n",
" <th>amin</th>\n",
" </tr>\n",
" <tr>\n",
" <th>C1</th>\n",
" <th>C2</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>A</th>\n",
" <th>TKO</th>\n",
" <td>1.360657</td>\n",
" <td>1.360657</td>\n",
" <td>1.484234</td>\n",
" <td>1.484234</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">B</th>\n",
" <th>HKD</th>\n",
" <td>0.468975</td>\n",
" <td>0.468975</td>\n",
" <td>-0.385433</td>\n",
" <td>-0.385433</td>\n",
" </tr>\n",
" <tr>\n",
" <th>OSK</th>\n",
" <td>2.086522</td>\n",
" <td>2.086522</td>\n",
" <td>0.752493</td>\n",
" <td>0.752493</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">C</th>\n",
" <th>CBA</th>\n",
" <td>0.233854</td>\n",
" <td>0.233854</td>\n",
" <td>-0.593259</td>\n",
" <td>-0.593259</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TKO</th>\n",
" <td>-0.422905</td>\n",
" <td>-0.422905</td>\n",
" <td>-1.216815</td>\n",
" <td>-1.216815</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" data1 data2 \n",
" amax amin amax amin\n",
"C1 C2 \n",
"A TKO 1.360657 1.360657 1.484234 1.484234\n",
"B HKD 0.468975 0.468975 -0.385433 -0.385433\n",
" OSK 2.086522 2.086522 0.752493 0.752493\n",
"C CBA 0.233854 0.233854 -0.593259 -0.593259\n",
" TKO -0.422905 -0.422905 -1.216815 -1.216815"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"g6 = df.groupby([\"C1\",\"C2\"]).agg([np.max, np.min])\n",
"g6"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th></th>\n",
" <th>data1</th>\n",
" <th>data2</th>\n",
" </tr>\n",
" <tr>\n",
" <th>C1</th>\n",
" <th>C2</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>A</th>\n",
" <th>TKO</th>\n",
" <td>1.360657</td>\n",
" <td>1.484234</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">B</th>\n",
" <th>HKD</th>\n",
" <td>0.468975</td>\n",
" <td>-0.385433</td>\n",
" </tr>\n",
" <tr>\n",
" <th>OSK</th>\n",
" <td>2.086522</td>\n",
" <td>0.752493</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">C</th>\n",
" <th>CBA</th>\n",
" <td>0.233854</td>\n",
" <td>-0.593259</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TKO</th>\n",
" <td>-0.422905</td>\n",
" <td>-1.216815</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" data1 data2\n",
"C1 C2 \n",
"A TKO 1.360657 1.484234\n",
"B HKD 0.468975 -0.385433\n",
" OSK 2.086522 0.752493\n",
"C CBA 0.233854 -0.593259\n",
" TKO -0.422905 -1.216815"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def max_func(x):\n",
" return max(x)\n",
"\n",
"g7 = df.groupby([\"C1\",\"C2\"]).agg(max_func)\n",
"g7"
]
}
],
"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.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment