Skip to content

Commit

Permalink
fix dataframe
Browse files Browse the repository at this point in the history
  • Loading branch information
luweizheng committed Dec 7, 2023
2 parents 1fed494 + 3e7d060 commit 17f16ec
Show file tree
Hide file tree
Showing 9 changed files with 160 additions and 114 deletions.
8 changes: 4 additions & 4 deletions ch-pandas/data-preprocessing.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
"source": [
"## 处理重复值\n",
"\n",
"检测数据集的记录是否存在重复,可以使用 `.duplicated` 函数进行验证,但是该函数返回的是数据集每一行的检测结果,即 n 行数据会返回 n 个布尔值。为了能够得到最直接的结果,可以使用 `any` 函数。该函数表示的是在多个条件判断中,只要有一个条件为 True,则 `any` 返回的结果为 True。"
"检测数据集的记录是否存在重复,可以使用 `.duplicated()` 函数进行验证,但是该函数返回的是数据集每一行的检测结果,即 n 行数据会返回 n 个布尔值。为了能够得到最直接的结果,可以使用 `any` 函数。该函数表示的是在多个条件判断中,只要有一个条件为 True,则 `any` 返回的结果为 True。"
]
},
{
Expand Down Expand Up @@ -104,7 +104,7 @@
"id": "610f3c20",
"metadata": {},
"source": [
"如果有重复项,可以通过 `.drop_duplicated()` 删除。该函数有 inplace 参数,设置为 True 表示直接在原始数据集上做操作:`df.drop_duplicated(inplace = True)`。\n",
"如果有重复项,可以通过 `.drop_duplicated()` 删除。该函数有 `inplace` 参数,设置为 True 表示直接在原始数据集上做操作:`df.drop_duplicated(inplace = True)`。\n",
"\n",
"## 处理缺失值\n",
"\n",
Expand Down Expand Up @@ -191,7 +191,7 @@
" \n",
"可以使用 `.dropna()` 函数删除有缺失值的行或列。具体形式:`df.dropna(axis=0, how='any', inplace=False)`。\n",
"\n",
"这个函数有参数 `axis`,`axis` 用来指定要删除的轴。`axis=0` 表示删除行(默认),axis=1 表示删除列。`how` 用来指定删除的条件。`how='any'` 表示删除包含任何缺失值的行(默认),`how='all'` 表示只删除所有值都是缺失值的行。`inplace` 用于指定是否在原始 `DataFrame` 上进行修改,默认为 False,表示不修改原始 `DataFrame`,而是返回一个新的 `DataFrame`。\n",
"这个函数有参数 `axis`,`axis` 用来指定要删除的轴。`axis=0` 表示删除行(默认),`axis=1` 表示删除列。`how` 用来指定删除的条件。`how='any'` 表示删除包含任何缺失值的行(默认),`how='all'` 表示只删除所有值都是缺失值的行。`inplace` 用于指定是否在原始 `DataFrame` 上进行修改,默认为 False,表示不修改原始 `DataFrame`,而是返回一个新的 `DataFrame`。\n",
"\n",
"例如,删除包含任何缺失值的行。"
]
Expand Down Expand Up @@ -697,7 +697,7 @@
"id": "480ca978",
"metadata": {},
"source": [
"在这个例子中,`apply` 有个参数为 `axis`,`axis = 1` 设置函数对每一行操作;`axis = 0`` 设置函数对每一列操作;默认 axis = 0。\n",
"在这个例子中,`apply` 有个参数为 `axis`,`axis = 1` 设置函数对每一行操作;`axis = 0` 设置函数对每一列操作;默认 `axis = 0`\n",
"\n",
"例:和 `.loc[]` 一起使用,进行更高级的数据切片。`.apply()` 返回对每一行做条件判断的一系列布尔值,以 `[]` 操作选择部分列。下面的选择条件为:如果 `country` 列属于特定国家,且 `POP > 40000`;如果 `country` 列不属于特定国家,且 `POP < 20000`"
]
Expand Down
31 changes: 23 additions & 8 deletions ch-pandas/dataframe-slicing.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,16 @@
"* 使用 `.iloc` 或者 `.loc` 函数\n",
"* 使用 `.query` 函数\n",
"\n",
"### 使用 [] 进行选择\n",
"### 使用 `[]` 进行选择\n",
"- 选择行\n",
"\n",
"选择第 2 行到第 5 行(不包括第 5 行)的数据:"
"直接使用数字索引即可,`df[a,b]`表示选择 `DataFrame` 的第`a`行到第`b-1`行。\n",
"\n",
"```{note}\n",
"Python中的索引区间都是左闭右开区间,这意味着左边端点可以取到,而右边端点取不到。\n",
"```\n",
"\n",
"例:对上一章节的PWT案例数据 df 选择第 2 行到第 5 行(不包括第 5 行)的数据。\n"
]
},
{
Expand Down Expand Up @@ -254,7 +261,11 @@
"id": "eb81787d",
"metadata": {},
"source": [
"要选择列,我们可以传递一个列表,其中包含所需列的列名,为字符串形式。"
"- 选择列\n",
"\n",
"我们可以传递一个列表,其中包含所需列的列名,为字符串形式。\n",
"\n",
"例:选择 country 和 tcgdp 两列。"
]
},
{
Expand Down Expand Up @@ -389,7 +400,9 @@
"source": [
"如果只选取一列,`df['country']` 等价于 `df.country`。\n",
"\n",
"`[]` 还可以用来选择符合特定条件的数据。 例如,选取 POP 大于 20000 的行。判断语句 `df.POP> 20000` 会返回一系列布尔值,符合 POP 大于 20000 条件的会返回为 `True`。如果想要选择这些符合条件的数据,则需要:"
"- `[]` 选择符合特定条件的数据。 \n",
"\n",
"例如,选取 POP 大于 20000 的行。判断语句 `df.POP> 20000` 会返回一系列布尔值,符合 POP 大于 20000 条件的会返回为 `True`。如果想要选择这些符合条件的数据,则需要:"
]
},
{
Expand Down Expand Up @@ -789,7 +802,7 @@
"id": "9b41ebb1",
"metadata": {},
"source": [
"如果选择 cc 列和 cg 列的和大于 80 并且 POP 小于 20000 的行"
"例:选择 cc 列和 cg 列的和大于 80 并且 POP 小于 20000 的行"
]
},
{
Expand Down Expand Up @@ -1287,7 +1300,7 @@
"source": [
"使用 `loc` 函数进行选择,与 `iloc` 的区别在于,`loc` 除了接受整数外,还可以接受标签(`a`、`b` 这样的列名)、表示整数位置的 index、`boolean` 。\n",
"\n",
"选择第 2 行到第 5 行(不包括第 5 行),`country``tcgdp` 列:"
"例:选择第 2 行到第 5 行(不包括第 5 行),country 和 tcgdp 列。"
]
},
{
Expand Down Expand Up @@ -1369,7 +1382,7 @@
"id": "44f9c427",
"metadata": {},
"source": [
"使用 `loc` 函数选择 POP 列最大值的行"
"例:使用 `loc` 函数选择 POP 列最大值的行"
]
},
{
Expand Down Expand Up @@ -1517,7 +1530,9 @@
"id": "97dd2bd9",
"metadata": {},
"source": [
"还可以使用这种形式:`.loc[,]`,两个参数用逗号隔开,第一个参数接受条件,第二个参数接受我们想要返回的列名,得到的是符合条件的特定的列。"
"还可以使用这种形式:`.loc[,]`,两个参数用逗号隔开,第一个参数接受条件,第二个参数接受我们想要返回的列名,得到的是符合条件的特定的列。\n",
"\n",
"例:选择满足 cc 列加 cg 列大于等于80,POP小于等于20000条件的 country, year, POP 三列。"
]
},
{
Expand Down
Loading

0 comments on commit 17f16ec

Please sign in to comment.