精华内容
下载资源
问答
  • python实现查找excel里某一列重复数据并且剔除后打印的方法
    千次阅读
    2020-12-01 23:27:48

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台;社区覆盖了云计算、大数据、人工智能、IoT、云原生、数据库、微服务、安全、开发与运维9大技术领域。","link1":"https://developer.aliyun.com/group/?spm=a2c6h.12883283.1377930.25.7287201c9RKTCi&groupType=other","link":"https://developer.aliyun.com/","icon":"https://img.alicdn.com/tfs/TB1TlXBEkT2gK0jSZPcXXcKkpXa-200-200.png","btn2":"开发者藏经阁","tip":"打通开发者成长路径,学习中心 。全线阿里云技术大牛公开课,立即查看","btn1":"技术与产品技术圈","link2":"https://developer.aliyun.com/topic/ebook?spm=a2c6h.12883283.1362932.15.7287201c9RKTCi","title":"阿里云开发者社区"}],"search":[{"txt":"学习中心","link":"https://developer.aliyun.com/learning?spm=a2c6h.13788135.1364563.41.299f5f24exe3IS"},{"txt":"技能测试中心 ","link":"https://developer.aliyun.com/exam?spm=a2c6h.13716002.1364563.42.6cac18a3JWCM5U"},{"txt":"开发者云 ","link":"https://developer.aliyun.com/adc/?spm=a2c6h.13716002.1364563.59.6b0818a3DV0vzN"},{"txt":"在线编程 ","link":"https://developer.aliyun.com/coding?spm=5176.13257455.1364563.57.701e7facHvqi5r"},{"txt":"学习中心 ","link":"https://developer.aliyun.com/learning?spm=a2c6h.12883283.1364563.41.5f1f201c5CLDCC"},{"txt":"高校计划 ","link":"https://developer.aliyun.com/adc/college/?spm=a2c6h.13716002.1364563.58.6cac18a3JWCM5U"}],"countinfo":{"search":{"length_pc":0,"length":0},"card":{"length_pc":0,"length":0}}}

    {"$env":{"JSON":{}},"$page":{"env":"production"},"$context":{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台;社区覆盖了云计算、大数据、人工智能、IoT、云原生、数据库、微服务、安全、开发与运维9大技术领域。","link1":"https://developer.aliyun.com/group/?spm=a2c6h.12883283.1377930.25.7287201c9RKTCi&groupType=other","link":"https://developer.aliyun.com/","icon":"https://img.alicdn.com/tfs/TB1TlXBEkT2gK0jSZPcXXcKkpXa-200-200.png","btn2":"开发者藏经阁","tip":"打通开发者成长路径,学习中心 。全线阿里云技术大牛公开课,立即查看","btn1":"技术与产品技术圈","link2":"https://developer.aliyun.com/topic/ebook?spm=a2c6h.12883283.1362932.15.7287201c9RKTCi","title":"阿里云开发者社区"}],"search":[{"txt":"学习中心","link":"https://developer.aliyun.com/learning?spm=a2c6h.13788135.1364563.41.299f5f24exe3IS"},{"txt":"技能测试中心 ","link":"https://developer.aliyun.com/exam?spm=a2c6h.13716002.1364563.42.6cac18a3JWCM5U"},{"txt":"开发者云 ","link":"https://developer.aliyun.com/adc/?spm=a2c6h.13716002.1364563.59.6b0818a3DV0vzN"},{"txt":"在线编程 ","link":"https://developer.aliyun.com/coding?spm=5176.13257455.1364563.57.701e7facHvqi5r"},{"txt":"学习中心 ","link":"https://developer.aliyun.com/learning?spm=a2c6h.12883283.1364563.41.5f1f201c5CLDCC"},{"txt":"高校计划 ","link":"https://developer.aliyun.com/adc/college/?spm=a2c6h.13716002.1364563.58.6cac18a3JWCM5U"}],"countinfo":{"search":{"length_pc":0,"length":0},"card":{"length_pc":0,"length":0}}}}

    更多相关内容
  • excel表格筛选一列重复数据

    千次阅读 2020-01-27 15:10:04
    重复数据标红后, 再以颜色筛选数据

    重复数据标红后, 再以颜色筛选数据

    展开全文
  • 因此,解决方法就是先筛选出指定字段有重复值的记录,再进行删除操作。因为使用的是 MongoDB 数据库,因此需要用到 MongoDB 相关的执行命令,这与 MySQL 中相关操作语句有较大差别,针对本问题的解决方法的执行命令...

    🎈在业务场景中遇到这样一个问题,根据某个字段进行条件查询出来的记录总数与后端 MongoDB 数据库中记录总数出现不一致的情形,经过分析之后发现是因为数据库中某个唯一字段的值重现重复的情况,导致了有多条重复的记录存在。

    🎈因此,解决方法就是先筛选出指定字段有重复值的记录,再进行删除操作。因为使用的是 MongoDB 数据库,因此需要用到 MongoDB 相关的执行命令,这与 MySQL 中相关操作语句有较大差别,针对本问题的解决方法的执行命令如下:

    db.getCollection('host').aggregate([{$group: { _id : '$host_id', count: {$sum: 1}}}, {$match: {count: {$gt: 1}}}], {allowDiskUse: true})
    

    🎈上面的执行命令其实是 MongoDB 的聚合查询(聚合管道)语句,其中, $ group:{_id: ‘$ host_id’, count: {$ sum: 1}} 中的 “host_id” 便是需要进行筛选的字段(根据情况替换成自己要筛选的字段),而 count: {$ sum: 1} 表示按照 group 的条件, 满足一条就计数就加 1,也就是 count 是 group 中 每个 host_id 的出现的次数。

    🎈而 $ match: {count: {$gt: 1}}} 表示匹配 count 值大于 1 的记录,也就是 host_id 字段值出现两次以上的记录。gt 的全城是 greater than,因此 $ gt:1 便表示大于1的意思。关于 MongoDB 中常用的比较运算符如下表所示

    简称全称
    $gtgreater than
    $gtegreater than or equal
    $ltless than
    $lteless than or equal
    $nenot equal
    $inin
    $ninnot in

    🎈此外,由于管道阶段的 RAM 限制为 100MB,如果要处理大型数据集,那么开启 allowDiskUse 选项启用聚合管道阶段,将数据写入临时文件,找个参数可以视情况而加。

    🎈最后,将上面的聚合查询语句在 Robo3T 中的终端命令行执行,得到的结果如下图所示
    在这里插入图片描述
    🎈由上图可以看出,分别将出现重复值的 host_id 以及重复的次数查询出来。那么之后,便可以根据得到的 host_id 去后台数据库中根据 host_id 查询记录,再将记录删除,这里就不再叙述如何进行查询以及删除语句了,因为重点是关于如何利用聚合查询语句进行初步筛选得到重复值,这才是本篇博客记录的重点。

    展开全文
  • 判断数据表的某一列中是否有某个。在“产品”列中查找“手提包”,将等于“手提包”的地方标记为True,将不等于“手提包”的地方标记为False。 4. 替换数据 4.1 一对一替换 将数据表中的“背包”全部替换为...

    1. 数据文件

    2. 读数据

    import pandas as pd

    data = pd.read_csv('D:\git\python\code\第5章\产品统计表.csv')

    print(data)

    输出

    编号 产品 成本价(元/个) 销售价(元/个) 数量(个) 成本(元) 收入(元) 利润(元)

    0 a001 背包 16 65 60 960 3900 2940

    1 a002 钱包 90 187 50 4500 9350 4850

    2 a003 背包 16 65 23 368 1495 1127

    3 a004 手提包 36 147 26 936 3822 2886

    4 a005 钱包 90 187 78 7020 14586 7566

    5 a006 单肩包 58 124 63 3654 7812 4158

    6 a007 单肩包 58 124 58 3364 7192 3828

    3. 查找数据

    >>> data.isin(['钱包','005'])

    编号 产品 成本价(元/个) 销售价(元/个) 数量(个) 成本(元) 收入(元) 利润(元)

    0 False False False False False False False False

    1 False True False False False False False False

    2 False False False False False False False False

    3 False False False False False False False False

    4 False True False False False False False False

    5 False False False False False False False False

    6 False False False False False False False False

    >>> data['产品'].isin(['手提包'])

    0 False

    1 False

    2 False

    3 True

    4 False

    5 False

    6 False

    Name: 产品, dtype: bool

    说明:

    在整个数据表中查找是否有值“a005”和“钱包”,将等于“a005”或“钱包”的地方标记为True,将不等于“a005”或“钱包”的地方标记为False。需要注意的是,要查找的值必须以列表的形式给出。

    判断数据表的某一列中是否有某个值。在“产品”列中查找值“手提包”,将等于“手提包”的地方标记为True,将不等于“手提包”的地方标记为False。

    4. 替换数据

    4.1 一对一替换

    将数据表中的值“背包”全部替换为“挎包”。replace()函数括号中逗号前面的参数是需要替换的值,逗号后面的参数是替换后的值。

    参数inplace默认是不对原表替换,设置为True则原表上替换。

    >>> data.replace('背包','挎包', inplace=True)

    >>> print(data)

    编号 产品 成本价(元/个) 销售价(元/个) 数量(个) 成本(元) 收入(元) 利润(元)

    0 a001 挎包 16 65 60 960 3900 2940

    1 a002 钱包 90 187 50 4500 9350 4850

    2 a003 挎包 16 65 23 368 1495 1127

    3 a004 手提包 36 147 26 936 3822 2886

    4 a005 钱包 90 187 78 7020 14586 7566

    5 a006 单肩包 58 124 63 3654 7812 4158

    6 a007 单肩包 58 124 58 3364 7192 3828

    4.2 多对一替换

    >>> data.replace(['背包','手提包'], '挎包')

    编号 产品 成本价(元/个) 销售价(元/个) 数量(个) 成本(元) 收入(元) 利润(元)

    0 a001 挎包 16 65 60 960 3900 2940

    1 a002 钱包 90 187 50 4500 9350 4850

    2 a003 挎包 16 65 23 368 1495 1127

    3 a004 挎包 36 147 26 936 3822 2886

    4 a005 钱包 90 187 78 7020 14586 7566

    5 a006 单肩包 58 124 63 3654 7812 4158

    6 a007 单肩包 58 124 58 3364 7192 3828

    4.3 多对多替换

    多对多替换可以看成是多个一对一替换。

    >>> data.replace({'背包':'挎包', 16:39, 65:68}, inplace=True)

    >>> print(data)

    编号 产品 成本价(元/个) 销售价(元/个) 数量(个) 成本(元) 收入(元) 利润(元)

    0 a001 挎包 39 68 60 960 3900 2940

    1 a002 钱包 90 187 50 4500 9350 4850

    2 a003 挎包 39 68 23 368 1495 1127

    3 a004 手提包 36 147 26 936 3822 2886

    4 a005 钱包 90 187 78 7020 14586 7566

    5 a006 单肩包 58 124 63 3654 7812 4158

    6 a007 单肩包 58 124 58 3364 7192 3828

    5. 插入数据

    pandas模块没有专门提供插入行的方法,因此,插入数据主要是指插入一列新的数据。常用的方法有两种:

    第一种是以赋值的方式在数据表的最右侧插入列数据;

    第二种是用insert()函数在数据表的指定位置插入列数据。

    >>> data = pd.read_csv('D:\git\python\code\第5章\产品统计表.csv')

    >>> data['品牌'] = ['AM','DE','SR','AM','TY','DE','UD']

    >>> print(data)

    编号 产品 成本价(元/个) 销售价(元/个) 数量(个) 成本(元) 收入(元) 利润(元) 品牌

    0 a001 背包 16 65 60 960 3900 2940 AM

    1 a002 钱包 90 187 50 4500 9350 4850 DE

    2 a003 背包 16 65 23 368 1495 1127 SR

    3 a004 手提包 36 147 26 936 3822 2886 AM

    4 a005 钱包 90 187 78 7020 14586 7566 TY

    5 a006 单肩包 58 124 63 3654 7812 4158 DE

    6 a007 单肩包 58 124 58 3364 7192 3828 UD

    >>> data.insert(2, '产地', ['北京','深圳','成都','杭州','上海','重庆','武汉'])

    >>> print(data)

    编号 产品 产地 成本价(元/个) 销售价(元/个) 数量(个) 成本(元) 收入(元) 利润(元) 品牌

    0 a001 背包 北京 16 65 60 960 3900 2940 AM

    1 a002 钱包 深圳 90 187 50 4500 9350 4850 DE

    2 a003 背包 成都 16 65 23 368 1495 1127 SR

    3 a004 手提包 杭州 36 147 26 936 3822 2886 AM

    4 a005 钱包 上海 90 187 78 7020 14586 7566 TY

    5 a006 单肩包 重庆 58 124 63 3654 7812 4158 DE

    6 a007 单肩包 武汉 58 124 58 3364 7192 3828 UD

    6. 删除数据

    使用pandas模块中的drop()函数。该函数既可以删除指定的列,也可以删除指定的行。

    6.1 删除列

    在drop()函数中直接给出要删除的列的列标签就可以删除列。

    >>> data.drop(['成本价(元/个)', '成本(元)'], axis=1)

    编号 产品 产地 销售价(元/个) 数量(个) 收入(元) 利润(元) 品牌

    0 a001 背包 北京 65 60 3900 2940 AM

    1 a002 钱包 深圳 187 50 9350 4850 DE

    2 a003 背包 成都 65 23 1495 1127 SR

    3 a004 手提包 杭州 147 26 3822 2886 AM

    4 a005 钱包 上海 187 78 14586 7566 TY

    5 a006 单肩包 重庆 124 63 7812 4158 DE

    6 a007 单肩包 武汉 124 58 7192 3828 UD

    drop()函数设置了两个参数:

    第1个参数以列表的形式给出要删除的行或列的标签;

    第2个参数axis用于设置按行删除还是按列删除;

    设置为0表示按行删除(即第1个参数中给出的标签是行标签);

    设置为1表示按列删除(即第1个参数中给出的标签是列标签)。

    还可以通过列序号来获取列标签,然后作为drop()函数的第1个参数使用。

    # 这3个效果一样

    data.drop(data.columns[[3,6]], axis=1)

    data.drop(['成本价(元/个)', '成本(元)'], axis=1)

    data.drop(columns=['成本价(元/个)', '成本(元)'], axis=1)

    6.2 删除行

    删除行的方法和删除列的方法类似,都要用到drop()函数,只不过需要将参数axis设置为0,其缺省值是0,可以不设。

    >>> data = pd.read_csv('D:\git\python\code\第5章\产品统计表.csv', index_col=0)

    >>> data.drop(['a001','a003'], axis=0)

    产品 成本价(元/个) 销售价(元/个) 数量(个) 成本(元) 收入(元) 利润(元)

    编号

    a002 钱包 90 187 50 4500 9350 4850

    a004 手提包 36 147 26 936 3822 2886

    a005 钱包 90 187 78 7020 14586 7566

    a006 单肩包 58 124 63 3654 7812 4158

    a007 单肩包 58 124 58 3364 7192 3828

    和删除列类似.

    # 这3个效果一样,只不过在使用第2种时,读文件时,可以不用index-col参数

    data.drop(['a001','a003'], axis=0)

    data.drop(data.index[[0,2]])

    data.drop(index=['a001','a003'])

    7. 处理缺失值

    7.1 数据准备

    7.2 查看缺失值

    在Python中,缺失值一般用NaN表示。从运行结果可以看出,数据表的第3行和第7行含有缺失值。

    >>> data = pd.read_csv('D:\git\python\code\第5章\产品统计表1.csv')

    >>> print(data)

    编号 产品 成本价(元/个) 销售价(元/个) 数量(个) 成本(元) 收入(元) 利润(元)

    0 a001 背包 16.0 65 60 960.0 3900 2940

    1 a002 钱包 90.0 187 50 4500.0 9350 4850

    2 a003 背包 NaN 65 23 368.0 1495 1127

    3 a004 手提包 36.0 147 26 936.0 3822 2886

    4 a005 钱包 90.0 187 78 7020.0 14586 7566

    5 a006 单肩包 58.0 124 63 3654.0 7812 4158

    6 a007 单肩包 58.0 124 58 NaN 7192 3828

    如果要查看每一列的缺失值情况,可以使用pandas模块中的info()函数。

    >>> print(data.info())

    RangeIndex: 7 entries, 0 to 6

    Data columns (total 8 columns):

    # Column Non-Null Count Dtype

    --- ------ -------------- -----

    0 编号 7 non-null object

    1 产品 7 non-null object

    2 成本价(元/个) 6 non-null float64

    3 销售价(元/个) 7 non-null int64

    4 数量(个) 7 non-null int64

    5 成本(元) 6 non-null float64

    6 收入(元) 7 non-null int64

    7 利润(元) 7 non-null int64

    dtypes: float64(2), int64(4), object(2)

    memory usage: 576.0+ bytes

    None

    从运行结果可以看出,“成本价(元/个)”列和“成本(元)”列都是“6 non-null”,表示这两列都有6个非空值,而其他列都有7个非空值,说明这两列各有1个空值(即缺失值)。

    使用isnull()函数判断数据表中的哪个值是缺失值,并将缺失值标记为True,非缺失值标记为False。

    >>> a = data.isnull()

    >>> print(a)

    编号 产品 成本价(元/个) 销售价(元/个) 数量(个) 成本(元) 收入(元) 利润(元)

    0 False False False False False False False False

    1 False False False False False False False False

    2 False False True False False False False False

    3 False False False False False False False False

    4 False False False False False False False False

    5 False False False False False False False False

    6 False False False False False True False False

    7.3 删除缺失值

    使用dropna()函数可以删除数据表中含有缺失值的行。默认情况下,只要某一行中有缺失值,该函数就会把这一行删除。

    >>> b = data.dropna()

    >>> print(b)

    编号 产品 成本价(元/个) 销售价(元/个) 数量(个) 成本(元) 收入(元) 利润(元)

    0 a001 背包 16.0 65 60 960.0 3900 2940

    1 a002 钱包 90.0 187 50 4500.0 9350 4850

    3 a004 手提包 36.0 147 26 936.0 3822 2886

    4 a005 钱包 90.0 187 78 7020.0 14586 7566

    5 a006 单肩包 58.0 124 63 3654.0 7812 4158

    如果只想删除整行都为缺失值的行,则需要为dropna()函数设置参数how的值为'all'。

    c = data.dropna(how='all')

    print(c)

    7.4 缺失值的填充

    使用fillna()函数可以将数据表中的所有缺失值填充为指定的值。

    >>> d = data.fillna(0)

    >>> print(d)

    编号 产品 成本价(元/个) 销售价(元/个) 数量(个) 成本(元) 收入(元) 利润(元)

    0 a001 背包 16.0 65 60 960.0 3900 2940

    1 a002 钱包 90.0 187 50 4500.0 9350 4850

    2 a003 背包 0.0 65 23 368.0 1495 1127

    3 a004 手提包 36.0 147 26 936.0 3822 2886

    4 a005 钱包 90.0 187 78 7020.0 14586 7566

    5 a006 单肩包 58.0 124 63 3654.0 7812 4158

    6 a007 单肩包 58.0 124 58 0.0 7192 3828

    可以通过为fillna()函数传入一个字典,为不同列中的缺失值设置不同的填充值。

    >>> e = data.fillna({'成本价(元/个)': 16, '成本(元)': 3364})

    >>> print(e)

    编号 产品 成本价(元/个) 销售价(元/个) 数量(个) 成本(元) 收入(元) 利润(元)

    0 a001 背包 16.0 65 60 960.0 3900 2940

    1 a002 钱包 90.0 187 50 4500.0 9350 4850

    2 a003 背包 16.0 65 23 368.0 1495 1127

    3 a004 手提包 36.0 147 26 936.0 3822 2886

    4 a005 钱包 90.0 187 78 7020.0 14586 7566

    5 a006 单肩包 58.0 124 63 3654.0 7812 4158

    6 a007 单肩包 58.0 124 58 3364.0 7192 3828

    8. 处理重复值

    重复值的常用处理操作包括删除重复值和提取唯一值,前者可以使用drop_duplicates()函数来完成,后者可以使用unique()函数来完成。

    数据文件:产品统计表2.7z

    8.1 删除重复行

    >>> data = pd.read_excel('D:\git\python\code\第5章\产品统计表2.xlsx')

    >>> data = data.dropna(how='all')

    >>> print(data)

    编号 产品 成本价(元/个) 销售价(元/个) 数量(个) 成本(元) 收入(元) 利润(元)

    0 a001 背包 16.0 65.0 60.0 960.0 3900.0 2940.0

    1 a002 钱包 90.0 187.0 50.0 4500.0 9350.0 4850.0

    2 a003 背包 16.0 65.0 23.0 368.0 1495.0 1127.0

    3 a004 手提包 36.0 147.0 26.0 936.0 3822.0 2886.0

    4 a004 手提包 36.0 147.0 26.0 936.0 3822.0 2886.0

    5 a005 钱包 90.0 187.0 78.0 7020.0 14586.0 7566.0

    6 a006 单肩包 58.0 124.0 63.0 3654.0 7812.0 4158.0

    上述数据表的第4行和第5行中每列数据都完全相同,这样的行称为重复行。如果要只保留第4行,删除与第4行重复的行,可直接使用drop_duplicates()函数,无须设置任何参数。

    >>> a = data.drop_duplicates()

    >>> print(a)

    编号 产品 成本价(元/个) 销售价(元/个) 数量(个) 成本(元) 收入(元) 利润(元)

    0 a001 背包 16.0 65.0 60.0 960.0 3900.0 2940.0

    1 a002 钱包 90.0 187.0 50.0 4500.0 9350.0 4850.0

    2 a003 背包 16.0 65.0 23.0 368.0 1495.0 1127.0

    3 a004 手提包 36.0 147.0 26.0 936.0 3822.0 2886.0

    5 a005 钱包 90.0 187.0 78.0 7020.0 14586.0 7566.0

    6 a006 单肩包 58.0 124.0 63.0 3654.0 7812.0 4158.0

    8.2 删除某一列中的重复值

    >>> b = data.drop_duplicates(subset='产品')

    >>> print(b)

    编号 产品 成本价(元/个) 销售价(元/个) 数量(个) 成本(元) 收入(元) 利润(元)

    0 a001 背包 16.0 65.0 60.0 960.0 3900.0 2940.0

    1 a002 钱包 90.0 187.0 50.0 4500.0 9350.0 4850.0

    3 a004 手提包 36.0 147.0 26.0 936.0 3822.0 2886.0

    6 a006 单肩包 58.0 124.0 63.0 3654.0 7812.0 4158.0

    默认保留第一个重复值所在的行,删除其他重复值所在的行。

    可以利用drop_duplicates()函数的参数keep来自定义删除重复值时保留哪个重复值所在的行。

    例如:

    将参数keep设置为'first',表示保留第一个重复值所在的行。

    如果要保留最后一个重复值所在的行,则将参数keep设置为'last'。

    还可以将参数keep设置为False,表示把重复值一个不留地全部删除。

    8.3 获取唯一值

    使用pandas模块中的unique()函数可以获取某一列数据的唯一值。

    >>> f = data['产品'].unique()

    >>> print(f)

    ['背包' '钱包' '手提包' '单肩包']

    说明:获取的唯一值是按照其在数据表中出现的顺序排列的。

    9 排序数据

    排序数据主要会用到sort_values()函数和rank()函数。

    sort_values()函数的功能是将数据按照大小进行升序排序或降序排序;

    rank()函数的功能则是获取数据的排名。

    9.1 用sort_values()函数排序数据

    sort_values()函数的常用参数有两个:

    一个是by,用于指定要排序的列;

    另一个是ascending,用于指定排序方式是升序还是降序。

    >>> a = data.sort_values(by='数量(个)', ascending=True)

    >>> print(a)

    编号 产品 成本价(元/个) 销售价(元/个) 数量(个) 成本(元) 收入(元) 利润(元)

    2 a003 背包 16.0 65.0 23.0 368.0 1495.0 1127.0

    3 a004 手提包 36.0 147.0 26.0 936.0 3822.0 2886.0

    4 a004 手提包 36.0 147.0 26.0 936.0 3822.0 2886.0

    1 a002 钱包 90.0 187.0 50.0 4500.0 9350.0 4850.0

    0 a001 背包 16.0 65.0 60.0 960.0 3900.0 2940.0

    6 a006 单肩包 58.0 124.0 63.0 3654.0 7812.0 4158.0

    5 a005 钱包 90.0 187.0 78.0 7020.0 14586.0 7566.0

    9.2 用rank()函数获取数据的排名

    rank()函数的常用参数有两个:

    一个是method,用于指定数据有重复值时的处理方式;

    另一个是ascending,用于指定排序方式是升序还是降序。

    rank初次接触不好理解,第10小节专门解释一下。

    >>> b = data['利润(元)'].rank(method='average', ascending=False)

    >>> print(b)

    0 4.0

    1 2.0

    2 7.0

    3 5.5

    4 5.5

    5 1.0

    6 3.0

    10 rank()函数

    rank是通过“为各组分配一个平均排名”的方式破坏平级关系的。pandas排名会增加一个排名值(从1开始,一直到数组中有效数据的数量)。

    函数原型:

    rank(axis=0, method: str = 'average', numeric_only: Union[bool, NoneType] = None, na_option: str = 'keep', ascending: bool = True, pct: bool = False)

    假设创建了一个Series对象obj = Series([7, -5, 7, 4, 2, 0, 4]),就是上图中”索引“和”值“这两列,我们人为的按照值的大小进行了一个排名,并且产生了一个序列(”人为的排名“)这一列,关于有两个索引(0和2)的值都是7的这种情况的排名的规则是,首先出现的值排名靠前。

    下面就来说一下method参数的作用。

    若为”average“,不相同的值,排名就取”人为的排名“的排名值,相同值的,排名需要求平均值,例如:索引0和2的值都为7,则平均值为(7+6)/2=6.5;

    若为”min“,不相同的值,排名就取”人为的排名“的排名值,相同值的,排名取最小值,例如:索引0和2的值都为7,则排名都取6;

    若为”max“,不相同的值,排名就取”人为的排名“的排名值,相同值的,排名取最大值,例如:索引0和2的值都为7,则排名都取7;

    若为”first“,则就取”人为的排名“这列的值。

    11. 筛选数据

    >>> data = pd.read_csv('D:\git\python\code\第5章\产品统计表.csv')

    >>> a = data[data['产品'] == '单肩包']

    >>> print(a)

    编号 产品 成本价(元/个) 销售价(元/个) 数量(个) 成本(元) 收入(元) 利润(元)

    5 a006 单肩包 58 124 63 3654 7812 4158

    6 a007 单肩包 58 124 58 3364 7192 3828

    用比较运算符“>”筛选出“数量(个)”列的值大于60的数据

    >>> b = data[data['数量(个)'] > 60]

    >>> print(b)

    编号 产品 成本价(元/个) 销售价(元/个) 数量(个) 成本(元) 收入(元) 利润(元)

    4 a005 钱包 90 187 78 7020 14586 7566

    5 a006 单肩包 58 124 63 3654 7812 4158

    如果要进行多条件筛选,并且这些条件之间是“逻辑与”的关系,可以用“&”符号连接多个筛选条件。

    需要注意的是,每个条件要分别用括号括起来。

    >>> c = data[(data['产品'] == '单肩包') & (data['数量(个)'] > 60)]

    >>> print(c)

    编号 产品 成本价(元/个) 销售价(元/个) 数量(个) 成本(元) 收入(元) 利润(元)

    5 a006 单肩包 58 124 63 3654 7812 4158

    要进行多条件筛选,并且这些条件之间是“逻辑或”的关系,可以用“|”符号连接多个筛选条件,每个条件也要分别用括号括起来。

    展开全文
  • 筛选df中某列重复值的索引

    千次阅读 2019-11-22 11:56:26
    df Out[1]: year variable value 0 2018 A 3.0 1 2019 A 4.0 2 2016 A 6.0 3 2012 B 3.0 4 2013 B 8.0 5 2016 C 4.0 6 2018 C 10.0 7 2019 C 4.0 方法:利用DataFram的groupby函数及lambda函数进行筛选重复数据,...
  • mysql查询某一列重复数据

    千次阅读 2021-12-29 17:27:36
    查询某一列重复数据 SELECT * FROM my_effect t WHERE eff_name IN (SELECT eff_name FROM my_effect GROUP BY eff_name HAVING COUNT(eff_name)>1 ) ORDER BY t.eff_name; 删除某一列重复数据 delete from my_...
  • 在这是我的数据集(但有300000多条记录):Longitude Latitude14.28586 48.306914.28577 48.3068714.28555 48.3067814.28541 48.30673首先,我添加了个密度:^{pr2}$这是我用来增加每个记录的密度的代码:for ...
  • SQL select A,count(A) from 表名 where 条件 group by A having(count(A))>1 --A ,A值重复的数量 --思路:先通过A分组,然后统计数量
  • VBA 按照某一列进行筛选拆分数据,拆分成多个表或多个Sheet,按某列检查重复生成新的Sheet,删除除本表外的所有表
  • 实现该功能是用了DataView的筛选功能,DataView表示用于排序、筛选、搜索、编辑和导航的 DataTable 的可绑定数据的自定义视图。这里做了个简单易懂的Demo来讲述该方法。 1.建两张表 2.读数据库数据到dt显示...
  • select a.* from 表 a where exists(select 1 from 表 where 字段=a.字段 and a.字段1!...遇到个项目需要去除重复的记录,要想去除先要把他们找到。上面的这段代码可以找表中所有重复的记录。 ...
  •   linux uniq命令怎样将文件中某一列重复的行删除?     例如文件 number1.txt 中存储了你的电话簿信息,其中第一列是联系人,第二列是手机号码。电话簿中存在一个人有多个手机号码的情况,但你只想让每个人仅...
  • 今天小编就为大家分享篇pandas取出重复数据的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • python筛选excel某一列中相同的数据

    万次阅读 多人点赞 2018-11-13 11:34:57
    python筛选excel某一列中相同的数据 1.需要cmd下载 pip install pandas 的模板 2.注意文件的路径问题不要出错 3.还有文件的编码格式 ------encoding = 'gbk' import pandas as pd #读取excel文件信息 d...
  • Panda筛选出列值相同的行

    万次阅读 2018-01-15 14:00:21
    比如DataFrame有两列,[luid,message] 现在我想挑选相同人发送的信息 那么代码如下: # 筛选出luid相同的行 subData = trainData.loc[(trainData['luid']==user)]
  • 查询不重复值总数 select count(distinct lieming ) from table where tiaojian=1 查询不重复值具体值 select distinct lieming from table where tiaojian=1
  • pandas选择数据框中的重复值

    千次阅读 2020-10-22 14:16:22
    根据name和info两个字段,找出重复的数据 ''' test_df=pd.DataFrame({'name':['张三','李四','王五','张三','李四','王五','张三'], 'level':[10,3,8,14,2,3,18], 'info':['吵闹','安静','中等','吵闹','安静','...
  • Excel筛选单元格值重复次数大于特定的记录(count函数的使用)——问卷数据预处理 在做一些社科类的研究的时候,经常会需要做问卷收集数据,收集数据之后呢,当然就是要对数据做个预处理,在众多数据处理...
  • DB2根据指定列筛选重复数据

    千次阅读 2019-02-19 11:36:30
    今天在操作数据库时,有个新的统计需求 需求:统计2019年月份列名为A的调用量,其中DEPT_NM和COMPANY_NAME一致的,认为是同一数据,需要去重  表名称 : TEST , 表结构如下   ID COMPANY_NAME DEPT_...
  • 我们都知道了,高级筛选可以轻松解决:可以轻松解决多条件的筛选问题可以把结果复制到其他区域或表格中可以完成多联动筛选,比如筛选B大于A的数据可以筛选重复的数据,重复的只保留个可以用函数完成非常...
  • row+4+i,1,reason_list_collect[i]) 结果,如下,可以从堆数据中,筛选出共有多少条不重复的数据,并去除非关键的部分(时间戳之类的字符) ‘’’ ws.sheet_properties.tabColor = “1072BA” 根据的数字返回...
  • 但为确保表格最终统计分析结果的准确性,需要快速筛选出重复的数据,进行删除标记等多重处理。人工手动校对数据即浪费时间,准确率也不高,所以下面这几种高效筛选重复数据的技巧,你应该要知道。01公式法简单的说...
  • dataframe 按条件替换某一列中的方法如下所示:import pandas as pdcontent = ['T', 'F'] * 10data = pd.DataFrame(content, columns=['Y'])print(data)Y0 T1 F2 T3 F4 T5 F6 T7 F8 T9 F10 T11 F12 T13 F14 T15 ...
  • 如何将Excel重复数据筛选出来?简单技巧有三种!Excel表格数据在数量庞大的情况下,输入重复数据在所难免。...、高级筛选Excel自带的高级筛选功能,可以快速将数据中的重复数据删除,并筛选保留不重复的数据...
  • LINQ找datatable某列所有出现过的(不包含重复数据) //找选定列重复的数据 var dr = from item in dtCopy.Columns[selcol].Table.Select() group item by item.ItemArray[selcol].ToString()...
  • 查看某列重复元素及重复次数 #查看某列大于1的元素 library(tidyfst) count_dt(g,POS) %>% filter_dt(n>1)
  • 展开全部假设表名是num,列名是a,则查询语句为:SELECT * FROM num WHERE a IN(SELECT a FROM num GROUP BY a HAVING COUNT(a)>...结果被存储在e5a48de588b6323131333532363134313032313635333133336630653...
  • 利用字段间的关系对数据进行整理后,数据只能展示为竖的形式。在制作联动时,需要用到横行的数据排列方式,故研究该公式。具体如下图: 源数据是竖型分组排序好的数据: 需要用到的数据是这样,级菜单在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 63,066
精华内容 25,226
关键字:

如何筛选出一列的重复值