精华内容
下载资源
问答
  • def quchong(srt1): for i in range(1,int(len(srt1)/2)+1): for o in ...o] + srt1[k:] return srt1 srt1 = "如果我们一起来到了这里里里里" print(quchong(srt1)) 我们运行代码后会得到结果 如果我们一起来到了这里
    def quchong(srt1):
        for i in range(1,int(len(srt1)/2)+1):
            for o in range(len(srt1)):
                if srt1[o:o+i] == srt1[o+i:o+2*i]:
                    k = o + i
                    while srt1[k:k+i] == srt1[k+i:k+2*i] and k<len(srt1):
                        k = k + i
                    srt1 = srt1[:o] + srt1[k:]
        return srt1
        
    srt1 = "如果我们一起来到了这里里里里"
    print(quchong(srt1))
    

    我们运行代码后会得到结果

    如果我们一起来到了这里
    
    展开全文
  • Pandas模块是Python用于数据导入及整理的模块,对数据挖掘前期数据的处理工作十分有用 话不多说,先上pandas官方文档: pandas官方文档 数据处理参考文档A 数据处理参考文档B 本次将要实现的需求如下: 1.有一个...

    前言:

    Pandas模块是Python用于数据导入及整理的模块,对数据挖掘前期数据的处理工作十分有用
    话不多说,先上pandas官方文档:
    

    pandas官方文档
    数据处理参考文档A
    数据处理参考文档B

    **本次将要实现的需求如下:

    1.有一个Exscl表数据,该表有学员姓名 ,订单ID,ID ,以及购买的商品ID。数据格式如下:
    在这里插入图片描述

    2.现在要将上表处理成如下图所示格式:

    在这里插入图片描述

    3.代码处理逻辑主要如下:

    (1)原表共有四列值,去除第二列,并且当前三列的值都一样时,去重。
    (2)将第四列的值(商品ID),按照(1)步骤的合并结果,进行追加处理。(例如姓名/订单ID/ID都相同,但是商品ID不同时,就要将商品ID做追加处理)
    (3)将处理后的数据,按照原表的index进行排序并保留到csv文件中。

    4.代码体现:
    (1)先创建一个pandas的对象,用于读取数据源Exscl的数据,生成DataFrame

    import pandas as pd
    import csv
    
    df = pd.read_excel('aa.xlsx', usecols=[0,1,2,3])
    

    usecols代表读取哪几列的数据

    (2)将数据进行去重的处理,并重置索引
    groupby()函数用于分组去重,三列一样则去重,三列任意一列有不同,则不去重
    agg()函数处理groupby()处理的数据之外的列数据,并将列数据进行聚合,并用,分割格式化处理数据
    reset_index()重置索引排序

    df = df.groupby(['cUserName','订单ID','ID']).agg(lambda x:','.join(x.values)).reset_index()
    

    (3)将处理的得到的DataFrame写入csv文件中
    df.values.tolist()将拿到的所有值,转为列表形式
    pop(1)表示删除列表中下标为1的数据(删除订单ID),此时返回的每一个列表,就只有三个数据值了
    最后再将每次循环获得的列表值写入csv文件中

        with open('E:\\pythonScripts_autotest\\student_demo.csv', "w", newline='', encoding='GBK') as f:
            for new_list in df.values.tolist():
                new_list[0] = new_list[0].replace("@xyx2008test1", "")
                new_list[3] = str(new_list[3].split(",")).replace("'", '\\"')
                new_list.pop(1)
                writer = csv.writer(f)
                writer.writerow(new_list)
    

    5.完整代码

    import pandas as pd
    import csv
    
    #skiprowds跳过行,skiprowds跳过列,usecols读取指定列
    df = pd.read_excel('E:\\pythonScripts_autotest\\xyx_student_demo.xlsx',usecols=[0,1,2,3])
    
    # def func(df):
    #     # print( ','.join(df.values))
    #     return ','.join(df.values)
    #
    # def func_2(df):
    #     return df.values
    
    def data_list(df):
        # 分组聚合,groupby函数用于分组,三列一样则去重,三列任意一列有不同,则不去重
        # agg()函数表示处理groupuy处理的数据之外的列数据。并进行聚合
        #为什么不能直接print函数func(),因为你不用agg时,df.values拿到的是整个sheet的数据,用了agg,只返回某列数据
        #reset_index()函数用来重置索引
        df = df.groupby(['cUserName','订单ID','ID']).agg(lambda x:','.join(x.values)).reset_index()
        with open('E:\\pythonScripts_autotest\\student_demo.csv', "w", newline='', encoding='GBK') as f:
            for new_list in df.values.tolist():
                new_list[0] = new_list[0].replace("@xyx2008test1", "")
                new_list[3] = str(new_list[3].split(",")).replace("'", '\\"')
                new_list.pop(1)
                writer = csv.writer(f)
                writer.writerow(new_list)
        print("已转化成功!")
    
    展开全文
  • 之前用 Python 写过一个脚本,用来处理上千万用户的一些数据,其中有一个需求是统计用户的某一数据去重数量。为了加快程序的速度,我启用了多进程。但不幸的是,程序跑了近一个星期,还没处理完。这时,我感觉到了...

    之前用 Python 写过一个脚本,用来处理上千万用户的一些数据,其中有一个需求是统计用户的某一数据的去重数量。为了加快程序的速度,我启用了多进程。但不幸的是,程序跑了近一个星期,还没处理完。这时,我感觉到了不对,于是开始查看程序的性能瓶颈。

    对于统计去重数,我是将用户的数据放到一个列表中,然后用 len(set(data)) 去统计去重数量。刚开始我以为这的数据量并不大,每个用户的数据不会过百,我并没有注意到有的用户会有上万条的数据,因此消耗了大量的时间(其实我的脚本消耗时间最大的地方是因为从远程 redis 中取大量数据时发生长时间的阻塞,甚至连接超时,最后我采用的方式分而治之,每次取少量的数据,这样大大的提高了性能)。

    为了做优化,我开始寻求高效的方法。我发现,有大量的人认为采用字典效率会更高,即:

    data_unique = {}.fromkeys(data).keys()
    len(data_unique)
    

    于是,我做了下测试:

    In [1]: import random
    
    In [2]: data = [random.randint(0, 1000) for _ in xrange(1000000)]
    
    In [3]: %timeit len(set(data))
    10 loops, best of 3: 39.7 ms per loop
    
    In [4]: %timeit len({}.fromkeys(data).keys())
    10 loops, best of 3: 43.5 ms per loop
    

    由此可见,采用字典和采用集合的性能是差不多的,甚至可能还要慢些。

    在 Python 中其实有很多高效的库,例如用 numpy、pandas 来处理数据,其性能接近于 C 语言。那么,我们就用 numpy 和 pandas 来解决这个问题,这里我还比较了获取去重数据的性能,代码如下:

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    import collections
    import random as py_random
    import timeit
    
    import numpy.random as np_random
    import pandas as pd
    
    DATA_SIZE = 10000000
    
    def py_cal_len():
        data = [py_random.randint(0, 1000) for _ in xrange(DATA_SIZE)]
        len(set(data))
    
    def pd_cal_len():
        data = np_random.randint(1000, size=DATA_SIZE)
        data = pd.Series(data)
        data_unique = data.value_counts()
        data_unique.size
    
    def py_count():
        data = [py_random.randint(0, 1000) for _ in xrange(DATA_SIZE)]
        collections.Counter(data)
    
    def pd_count():
        data = np_random.randint(1000, size=DATA_SIZE)
        data = pd.Series(data)
        data.value_counts()
    
    # Script starts from here
    
    if __name__ == "__main__":
        t1 = timeit.Timer("py_cal_len()", setup="from __main__ import py_cal_len")
        t2 = timeit.Timer("pd_cal_len()", setup="from __main__ import pd_cal_len")
        t3 = timeit.Timer("py_count()", setup="from __main__ import py_count")
        t4 = timeit.Timer("pd_count()", setup="from __main__ import pd_count")
    
        print t1.timeit(number=1)
        print t2.timeit(number=1)
        print t3.timeit(number=1)
        print t4.timeit(number=1)
    

    运行结果:

    12.438587904
    0.435907125473
    14.6431810856
    0.258564949036
    

    利用 pandas 统计数据的去重数和去重数据,其性能是 Python 原生函数的 10 倍以上。

    展开全文
  • 自从我用Python编写第一行代码以来,就被它的简单性、出色的可读性和特别流行的一行代码所吸引。在下面,我将给大家介绍并解释一些Python一行程序。可能有些你还不知道,但对你未来的Python项目很有用。▍1、交换两...

    34942a13a62239495caf479ed236b61d.png

    自从我用Python编写第一行代码以来,就被它的简单性、出色的可读性和特别流行的一行代码所吸引。

    在下面,我将给大家介绍并解释一些Python一行程序。

    可能有些你还不知道,但对你未来的Python项目很有用。

    ▍1、交换两个变量

    # a = 4 b = 5

    a,b = b,a

    # print(a,b) >> 5,4

    让我们通过交换两个变量作为一个简单的开始。

    此方法是最简单、最直观的方法之一,无需使用临时变量或应用算术操作即可编写。

    ▍2、多个变量赋值

    a,b,c = 4,5.5, Hello

    #print(a,b,c) >> 4,5.5,hello

    你可以使用逗号和变量一次性将多个值分配给变量。使用此技术,你可以一次分配多个数据类型。

    你可以使用列表将值分配给变量。下面是将列表中的多个值分配给变量的示例。

    a,b,*c = [1,2,3,4,5]

    print(a,b,c)

    > 1 2 [3,4,5]

    ▍3、列表中偶数的和

    有很多方法可以做到这一点,但最好和最简单的方法是使用列表索引和sum函数。

    a = [1,2,3,4,5,6]

    s = sum([num for num in a if num%2 == 0])

    print(s)

    >> 12

    ▍4、从列表中删除多个元素

    del是Python中用于从列表中删除值的关键字。

    #### Deleting all even

    a = [1,2,3,4,5]

    del a[1::2]

    print(a)

    >[1, 3, 5]

    a

    ▍5、读取文件

    lst = [line.strip() for line in open( data.txt )]

    print(lst)

    这里我们使用列表来处理。

    首先,我们打开一个文本文件,并使用for循环,逐行读取。 最后,使用strip删除所有不必要的空间。

    通过使用列表功能,使得代码更简单,更短。

    list(open( data.txt ))

    ##Using with will also close the file after use

    with open("data.txt") as f:

    lst=[line.strip() for line in f]

    print(lst)

    ▍6、将数据写入文件

    with open("data.txt", a ,newline=

    ) as f:

    f.write("Python is awsome")

    上面的代码首先创建一个文件data.txt(如果没有的话),然后它会在文件中写Python is awesome。

    ▍7、创建列表

    lst = [i for i in range(0,10)]

    print(lst)

    > [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    or

    lst = list(range(0,10))

    print(lst)

    我们也可以使用相同的方法创建一个字符串列表。

    lst = [("Hello "+i) for i in [ Karl , Abhay , Zen ]]

    print(lst)

    > [ Hello Karl , Hello Abhay , Hello Zen ]

    ▍8、映射列表或类型转换整个列表

    有时在我们的项目中,我们需要更改列表中所有元素的数据类型。你想到的第一个方法可能是使用循环,然后访问列表中的所有元素,然后一个接一个地更改元素的数据类型。

    这个方法是老派的,在Python中我们有一个映射函数,可以为我们做这些工作。

    list(map(int,[ 1 , 2 , 3 ]))

    > [1, 2, 3]

    list(map(float,[1,2,3]))

    > [1.0, 2.0, 3.0]

    [float(i) for i in [1,2,3]]

    > [1.0, 2.0, 3.0]

    ▍9、创建集合

    我们用于创建列表的方法也可以用于创建集合。让我们使用包含范围内所有偶数的平方根方法来创建一个集合。

    #### Square of all even numbers in an range

    {x**2 for x in range(10) if x%2==0}

    > {0, 4, 16, 36, 64}

    ▍10、Fizz Buzz

    在这个测试中,我们需要编写一个程序来打印从1到20的数字。但如果是3的倍数,打印Fizz,如果是5的倍数,打印Buzz,如果同时是3和5的倍数,打印FizzBuzz,否则打印数字。

    看起来我们必须使用循环和多个if-else语句。如果你尝试用其他语言来做,你可能需要写10行代码,但是使用Python,我们可以只用一行代码就实现FizzBuzz。

    [ FizzBuzz if i%3==0 and i%5==0

    else Fizz if i%3==0

    else Buzz if i%5==0

    else i for i in range(1,20)]

    在上面的代码中,我们使用列表理解来运行一个从1到20的循环,然后在循环的每次迭代中,我们检查数字是否能被3或5整除。如果是,那么我们用Fizz或Buzz替换数值,或者用FizzBuzz数值。

    ▍11、回文

    回文是一个数字或字符串,当它被反转时看起来是一样的。

    text = level

    ispalindrome = text == text[::-1]

    ispalindrome

    > True

    ▍12、用空格分隔的整数到一个列表

    lis = list(map(int, input.split))

    print(lis)

    > 1 2 3 4 5 6 7 8

    [1, 2, 3, 4, 5, 6, 7, 8]

    ▍13、Lambda函数

    lambda函数是一个小型匿名函数。lambda函数可以接受任意数量的参数,但只能有一个表达式。

    # Function that returns square of any number

    sqr = lambda x: x * x

    sqr(10)

    > 100

    ▍14、检查列表中数字的存在

    num = 5

    if num in [1,2,3,4,5]:

    print( present )

    > present

    ▍15、打印图案

    在Python中,我们只需要一行代码就可以绘制出令人惊叹的图案。

    n = 5

    print(

    .join( * i for i in range(1, n + 1)))

    ▍16、查找阶乘

    阶乘是一个整数和它下面所有整数的乘积。

    import math

    n = 6

    math.factorial(n)

    > 720

    ▍17、斐波纳契数列

    一组数字,其中每个数字(斐波那契数)是前面两个数字的和。最简单的斐波那契数列1,1,2,3,5,8,13等等。可以使用列表推导式和for循环在一个范围内创建斐波那契数列。

    fibo = [0,1]

    [fibo.append(fibo[-2]+fibo[-1]) for i in range(5)]

    fibo

    > [0, 1, 1, 2, 3, 5, 8]

    ▍18、质数

    质数是一个只能被自身和1整除的数。例如:2、3、5、7等。为了在一个范围内生成质数,我们可以使用带有filter和lambda的list函数来生成质数。

    list(filter(lambda x:all(x % y != 0 for y in range(2, x)), range(2, 13)))

    > [2, 3, 5, 7, 11]

    ▍19、查找最大数值

    findmax = lambda x,y: x if x > y else y

    findmax(5,14)

    > 14

    or

    max(5,14)

    在上面的代码中,我们使用lambda函数检查比较条件,并根据返回的最大值。

    或者使用max内置函数。

    ▍20、线性代数

    有时候我们需要将列表中的元素缩放2到5倍。下面的代码解释了如何做到这一点。

    def scale(lst, x):

    return [i*x for i in lst]

    scale([2,3,4], 2)

    > [4,6,8]

    ▍21、矩阵转置

    您需要将所有行转换为列,反之亦然。在Python中,可以使用zip函数在一行代码中置换一个矩阵。

    a=[[1,2,3],

    [4,5,6],

    [7,8,9]]

    transpose = [list(i) for i in zip(*a)]

    transpose

    > [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

    ▍22、计数

    当我们需要知道某个值在文本中出现的次数时,这是一个重要而有用的用例。在Python中,有re库可以来帮你完成这项工作。

    import re

    len(re.findall( python , python is a programming language. python is python. ))

    > 3

    ▍23、用其他文本替换文本

    "python is a programming language.python is python".replace("python", Java )

    > Java is a programming language. Java is Java

    ▍24、模拟抛硬币

    这可能不是那么重要,但当你需要从一组给定的选择中生成一些随机选择时,它会非常有用。

    import random

    random.choice([ Head ,"Tail"])

    > Head

    ▍25、生成组

    groups = [(a, b) for a in [ a , b ] for b in [1, 2, 3]]

    groups

    > [( a , 1), ( a , 2), ( a , 3), ( b , 1), ( b , 2), ( b , 3)]

    展开全文
  • python列表去重计数

    2021-04-13 18:21:39
    读入数据总结欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右...
  • python对文件内容的去重 文章目录python对文件内容的去重前言实现步骤总结 前言 很多时候我们获取的数据存在大量重复,重复数据在进一步处理时会降低处理效率,且可能导致错误,因此内容去重数据处理一个重要...
  • status": "delete"}] new_s = [] # 存储去重后的数据 for x in edata: # 根据字典列表的resource_id做去重操作 if any(str(d.get('resource_id', None)).lower() == str(x['resource_id']).lower() for d in new_s):...
  • Python字典列表去重

    千次阅读 2021-05-17 14:41:53
    Python字典列表去重 最近在写代码时老是遇到 字典列表 的去重,想当然的就用上了 set(),哈哈哈哈哈直接上代码 list_a = [{"name": "Tom", "age": 18}, {"name": "Jerry", "age": 18}, {"name": "Tom", "age": 18}...
  • Python中DataFrame去重

    2021-02-03 08:57:20
    Python-面向对象编程01_什么是面向对象 Python从设计之初就已经是一门面向对象的语言了,正因如此,在Python中创建一个类和对象是很容易的. 什么是面向对象? 面向对象程序设计(Object-oriented programming, ...
  • python实现字符串去重

    2021-05-21 18:42:38
    python实现字符串去重 一、方法一:通过列表set方法 1. set也是一组数,无序,内容又不能重复,通过调用set()方法创建 2.例子 s = "233333" print(s) a = set(list(s)) print(a) a = ''.join(a) print(a) ...
  • Python | URL去重策略

    2021-02-03 00:26:50
    一、前言今天给大家分享的是,Python爬虫里url去重策略及实现。二、url去重及策略简介1. url去重从字面上理解,url去重即去除重复的url,在爬虫中就是去除已经爬取过的url,避免重复爬取,既影响爬虫效率,又产生冗余...
  • 如果数组是字典组成的,直接对数组内的字典采用set的方式进行去重,会报错: test= [{"a": 1}, {"a": 1}, {"a": 3}, {"b": 4}] test= list(set(test)) >>>TypeError: unhashabletype:'dict' 因为使用...
  • 这篇文章主要介绍了Python list去重且保持原顺序不变的方法,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下 背景 python 去重一顿操作猛如虎,set list 扒拉下去,就去重了,但是顺序就打乱了。...
  • python dataframe去重

    2021-07-13 14:28:46
    主要的代码: df2_name = df1_name.drop_duplicates(subset=['username'], keep='first',inplace=False) 常用的参数就这三个: subset 根据哪个或者哪些字段进行去重 [‘a’] 对a列进行去重 [‘a’, ‘b’] 对 a与...
  • 日常工作需要经常对数据进行去重的处理,在这里简单记录分享下 1.引入库 import os 2.完整代码(读取单个txt文件) 代码如下: 应事先在将txt文件放在对应路径下 import os path = './tutu' if not os.path.
  • Python:这事我比你熟 数据出现重复值是我们日常工作中经常会遇到的问题,例如下面这个EXCEL表格里,订单编号这一列里出现了多个重复值,这个时候我们就要对数据进行去重了。去重的方法有很多,这里介绍两种方法:1...
  • 数据分析中,有时候因为一些原因会有重复的记录,因此需要去重。如果重复的那些行是每一列懂相同的,删除多余的行只保留相同行中的一行就可以了,这个在Excel或pandas中都有很容易使用的工具了,例如Excel中就是在...
  • 前言列表去重是写Python脚本时常遇问题,因为不管源数据来自哪里,当我们转换成列表的方式时,有可能预期的结果不是我们最终的结果,最常见的就是列表中元素有重复,这时候第一件事我们就要做去重处理。我们先来个最...
  • 今天主要介绍set()这个函数。 set()函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、...使用函数也能实现以上需求,但代码量和执行效率来说,当然是使用python自带函数了。 ...
  • MongoDB的去重

    2020-12-19 14:52:57
    自己写了一个爬虫,编写mongo类insert功能时想要加一个判断语句避免爬取数据重复载入数据的情况,但是从实际运行情况来看,并不可行,先请各位看下代码:class MongoPipeLine():def __init__(self):self.client = ...
  • 我们在用EXCEL办公的时候,经常会遇到去重和排序的问题,其实无论用哪个软件都经常会遇到去重和排序问题,那么你知道用Python如何实现对字符串的去重排序吗?往下看,就是这么简单!案例s = "ajldjlajfdljfddd",...
  • Pythonnumpy点数组去重

    2021-01-14 11:44:50
    下面为大家分享一篇Python numpy 点数组去重的实例,具有很好的参考价值,希望对大家有所帮助。一起过来看看吧废话不多说,直接上代码,有详细注释# coding = utf-8import numpy as npfrom IPython import embed# xy...
  • python中set(集合)是和数学意义上的集合一样,不允许元素重复,因此可以将list转为set去重,当然这样比较粗暴,不清楚哪些数据是重复的。如果要找出哪些元素是重复的,可以用pandas库的dataframe数据结构,用drop_...
  • 利用python中集合的唯一性实现去重什么是集合1.集合是一个可变容器2.集合内的数据对象都是唯一的(不能重复)3.集合是无序的存储结构,集合内的数据没有先后关系4.集合是可迭代对象5.集合相当于是只有键没有值得字典(键...
  • [Python] 毕业去重代码

    2021-12-03 09:50:04
    代码: # -*- coding: utf-8 -*- # 论文去重 #@athor:凹凸曼大人 #@time:2021/5/8 import requests import jiami import qingqiu import jpype from remi.gui import Container,Button,TextInput,Label,...
  • 原标题:用Python实现Excel中常用的 20个操作方法总结分享下载RPA请访问:www.i-search.com.cn学习RPA请访问...代码(Python) 的方式来演示这两种工具是如何实现数据的读取、生成、计算、修改、统计、抽样、查找、可...
  • 本篇文章小编给大家分享一下python按照list中字典的某key去重代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。一、需求说明当我们写爬虫的时候,经常会...
  • 你看到的代码应该是没有缩进了,你可以右键>检查,从相应的源码中能看到相关的缩进 --------- 稍等我给你写下思路: 总体的思路就是动态的改变字典dic,字典中的键是tuple的第1个元素,即人名,相应的键值就是整个...
  • MongoDB:PyMongo百万级数据去重

    千次阅读 2021-11-19 10:36:19
    Python爬虫中经常使用MongoDB数据库来存储爬虫爬取的结果,于是乎就有了一个问题:百万级的MongoDB数据如何去重? 常见的思路便是在数据入库的时候检查该数据在数据库中是否已经存在,如果存在则忽略(效率高点)...
  • 今天笔者想对pandas中的行进行去重操作,找了好久,才找到相关的函数先看一个小例子from pandas import Series, DataFramedata = DataFrame({"k": [1, 1, 2, 2]})print dataIsDuplicated = data.duplicated()print ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,482
精华内容 9,392
关键字:

python数据去重代码

python 订阅
友情链接: 65818447.rar