渣渣兔 发表于 2023-7-30 12:07:35

【pandas小技巧】--按类型选择列

本篇介绍的是pandas选择列数据的一个小技巧。
之前已经介绍了很多选择列数据的方式,比如loc,iloc函数,按列名称选择,按条件选择等等。
这次介绍的是按照列的数据类型来选择列,按类型选择列可以帮助你快速选择正确的数据类型,提高数据分析的效率。
1. 类型种类

pandas列的数据类型主要有4大种类:

[*]number:数值类型,包括整数和浮点数
[*]object:主要是字符串类型
[*]catagory:分类类型
[*]datetime:日期类型
创建包含上述数据类型的测试数据:
import pandas as pd

df = pd.DataFrame(
    {
      "日期": [
            "2020/04/10",
            "2020/04/11",
            "2021/06/17",
            "2021/06/18",
            "2022/11/22",
            "2022/11/23",
      ],
      "年级": ["初一", "初二", "初一", "初二", "初一", "初二"],
      "学生": ["小红", "小华", "小明", "小李", "小汪", "小郑"],
      "名次": ,
      "平均成绩": ,
    },
)
df["日期"] = pd.to_datetime(df["日期"])
df["年级"] = df["年级"].astype("category")
print(df.dtypes)
dfhttps://cdn.nlark.com/yuque/0/2023/png/2235414/1683652875777-7d16630b-8987-4eea-bf03-f27a574607cb.png#averageHue=%23ebebeb&clientId=uf906c750-4bb6-4&from=paste&height=119&id=ude74a53b&originHeight=119&originWidth=294&originalType=binary&ratio=1&rotation=0&showTitle=false&size=10471&status=done&style=none&taskId=u684725b3-c89c-4403-934c-349f93de71b&title=&width=294
https://cdn.nlark.com/yuque/0/2023/png/2235414/1683653674160-e609b926-dd18-48fa-a593-cb0b67dbd4fa.png#averageHue=%23e6e6e6&clientId=uf906c750-4bb6-4&from=paste&height=219&id=ua2638c66&originHeight=219&originWidth=368&originalType=binary&ratio=1&rotation=0&showTitle=false&size=17078&status=done&style=none&taskId=u3f8d621a-34d8-4c0f-b254-4c51f682273&title=&width=368
2. 选择类型

按列的类型选择用 select_dtypes 函数。
2.1. 选择一个类型

选择一个类型时,用 include 参数指定列名。
df.select_dtypes(include="category")https://cdn.nlark.com/yuque/0/2023/png/2235414/1683654670993-79fc4041-5e48-48f6-8911-637f503e47f2.png#averageHue=%23e8e8e8&clientId=uf906c750-4bb6-4&from=paste&height=218&id=u921cc540&originHeight=218&originWidth=94&originalType=binary&ratio=1&rotation=0&showTitle=false&size=3289&status=done&style=none&taskId=udd121a8d-376e-4943-bd28-4ccf8f7eebd&title=&width=94
number类型包含 int 和 float。
df.select_dtypes(include="number")https://cdn.nlark.com/yuque/0/2023/png/2235414/1683654710237-dffd2b07-b0fc-40dc-82b9-a9d3638d5283.png#averageHue=%23e9e9e9&clientId=uf906c750-4bb6-4&from=paste&height=219&id=u232cec4b&originHeight=219&originWidth=171&originalType=binary&ratio=1&rotation=0&showTitle=false&size=6554&status=done&style=none&taskId=u9b1df6d6-17ae-454e-8c2f-bc0bc55495c&title=&width=171
也可以指定 int 或 float 选择整数或者浮点数。
df.select_dtypes(include="int")
df.select_dtypes(include="float")https://cdn.nlark.com/yuque/0/2023/png/2235414/1683654863712-967c12da-e0d5-4e8f-b0d4-c392c11b1901.png#averageHue=%23efefef&clientId=uf906c750-4bb6-4&from=paste&height=254&id=ub169f132&originHeight=254&originWidth=293&originalType=binary&ratio=1&rotation=0&showTitle=false&size=20072&status=done&style=none&taskId=u4785d80c-1684-4a05-9146-2fa5d5913b9&title=&width=293
2.2. 选择多个类型

选择多个类型还是 include 参数,不过传入的值是列表。
df.select_dtypes(include=["category", "datetime"])https://cdn.nlark.com/yuque/0/2023/png/2235414/1683654927948-c7345f39-1a93-4131-aba6-560240c42255.png#averageHue=%23e5e5e5&clientId=uf906c750-4bb6-4&from=paste&height=220&id=uaab7c91c&originHeight=220&originWidth=188&originalType=binary&ratio=1&rotation=0&showTitle=false&size=9864&status=done&style=none&taskId=u38749f5d-554c-4dfc-b6d2-c06bee18de6&title=&width=188
2.3. 指定不选的类型

include参数是指定要选择的类型,如果要选择的类型比较多,我们可以通过exclude参数来设置不需要的类型。
df.select_dtypes(exclude="datetime")https://cdn.nlark.com/yuque/0/2023/png/2235414/1683655023681-c677663c-ed45-44ba-86c2-aa79f322f44b.png#averageHue=%23e6e6e6&clientId=uf906c750-4bb6-4&from=paste&height=219&id=u4e5c517a&originHeight=219&originWidth=265&originalType=binary&ratio=1&rotation=0&showTitle=false&size=12008&status=done&style=none&taskId=u415e5484-4ecb-4e18-86f8-560b05beec3&title=&width=265
exclude 参数也可以传入列表,设置多个不选择的类型。
df.select_dtypes(exclude=["category", "datetime"])https://cdn.nlark.com/yuque/0/2023/png/2235414/1683655078324-70f71f5b-612c-4cf7-a6b5-e2103f7eeccf.png#averageHue=%23e7e7e7&clientId=uf906c750-4bb6-4&from=paste&height=215&id=ue6fca8a7&originHeight=215&originWidth=216&originalType=binary&ratio=1&rotation=0&showTitle=false&size=9562&status=done&style=none&taskId=u77cfbe7f-0d89-4291-8f6d-e1f6bed17e7&title=&width=216

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 【pandas小技巧】--按类型选择列