文档章节

导入CSV文件就行数据整理分析

Kefy
 Kefy
发布于 2018/07/18 12:02
字数 799
阅读 31
收藏 0
#-*-coding:utf-8-*-
import csv,os,re,math
localPath=input("请输入所有群文件的根目录:")    #所有QQ群文件的物理根目录路径
def info():
    info_dic=[]

    dirList=os.listdir(localPath)      #获取根目录下所有QQ群文件的名称
    #遍历每个群
    for i in dirList:
        group_list=re.findall(r"(.+)[(]|([0-9]+)[)][.]",i) #检索群名称和号码
        if len(group_list)==1:
            group_name=group_list[0][0].strip()  #群名称
            group_nums=group_list[0][1].strip()  #群号码
        else:
            group_name=group_list[0][0].strip()
            group_nums=group_list[1][1].strip()
        file_localPath=localPath+"\\"+i  #拼接群文件路径
        csv_reader = csv.reader(open(file_localPath,encoding='utf-8'))   #打开群文件
        # print("---------------%s,%s---------------"%(group_name,group_nums))
       #遍历每个群里的用户
        for row in csv_reader:
            user_list=re.findall(r"(.+)[<]|([0-9]+)@qq[.]com",row[0])  #检索用户名和号码
            if len(user_list)==1:        #检索结果条件判断
                user_name=user_list[0][0].strip()   #用户名
                user_nums=user_list[0][1].strip()  #用户号码
            else:
                user_name=user_list[0][0].strip()
                user_nums=user_list[1][1].strip()
            info_dic.append((group_name,group_nums,user_name,user_nums))
    return info_dic


#生成含有'QQ群名称', 'QQ群号码','QQ昵称','QQ号码'统计的CSV文件
def creatFile():
    headers = ['QQ群名称', 'QQ群号码','QQ昵称','QQ号码']
    with open('d:/info.csv', 'w',encoding='utf-8-sig',newline='') as f:  #默认生成文件保存在d:/info.csv
        # 标头在这里传入,作为第一行数据
        writer = csv.DictWriter(f, headers)
        writer.writeheader()
        Info=info()
        for row in Info:
            dic={'QQ群名称':row[0],'QQ群号码':row[1],'QQ昵称':row[2],'QQ号码':row[3]}
            writer.writerow(dic)


#查找含有贷款|信用卡|借条的用户
def find_keywords_users():
    Info=info()
    for row in Info:
        var=re.findall("贷款|信用卡|借条",row[2])
        if var:
            print("匹配到用户:%s(%s)含有%s,属于群:%s(%s)"%(row[2],row[3],var,row[0],row[1]))

#查找群众用户的数量
def count_userNums():
    Info=info()
    li=[]
    group_users=[]
    for row in Info:
        li.append("%s(%s)"%(row[0],row[1]))
    tu=set(li)
    for i in tu:
        Count=li.count(i)
        group_users.append([i,Count])
        print("%s这个群中,共有%d个用户"%(i,Count))
#每个群的平均昵称长度
def len_username_arg():
    Info=info()
    dic={}
    for row in Info:
        KEY=row[0]+row[1]
        if KEY in dic.keys():
            dic[KEY].append(len(row[2]))
        else:
            dic[KEY]=[len(row[2])]
    for i in dic.items():
        avg=sum(i[1])/len(i[1])
        print("%s群的平均昵称长度是:%d"%(i[0],avg))

#每个群的平均QQ号码位数
def len_usernums_arg():
    Info=info()
    dic={}
    for row in Info:
        KEY=row[0]+row[1]
        if KEY in dic.keys():
            dic[KEY].append(len(row[3]))
        else:
            dic[KEY]=[len(row[3])]
    for i in dic.items():
        avg=sum(i[1])/len(i[1])
        print("%s群的平均QQ号码位数是:%d位"%(i[0],avg))

#该群成员最大QQ号码位数
def len_usernums_max():
    Info=info()
    dic={}
    for row in Info:
        KEY=row[0]+row[1]
        if KEY in dic.keys():
            dic[KEY].append(len(row[3]))
        else:
            dic[KEY]=[len(row[3])]
    for i in dic.items():
        MAX=max(i[1])
        print("%s群的最大QQ号码位数是:%d位"%(i[0],MAX))

#有最多共同用户的两个群
def users_max():
    Info=info()
    dic={}
    for row in Info:
        KEY=row[0]+row[1]
        if KEY in dic.keys():
            dic[KEY].append(row[3])
        else:
            dic[KEY]=[row[3]]
    MAX_Len=0
    group1=""
    group2=""
    for i in dic.items():
        MAX=i
        for x in dic.items():
            if MAX[0] is not x[0]:
                Len=len(set(MAX[1]).intersection(set(i[1])))
                if Len>MAX_Len:
                    MAX_Len=Len
                    group1=MAX[0]
                    group2=x[0]
    print("“%s”和“%s”有最多共同的QQ号码,共计:%d个"%(group1,group2,MAX_Len))

 

© 著作权归作者所有

共有 人打赏支持
Kefy
粉丝 0
博文 23
码字总数 44323
作品 0
西安
程序员
私信 提问
如何使用SPSS查看大CSV文件(超过100万行)?

本文原创作者:鲲之鹏(http://www.site-digger.com) 本文原始链接:http://www.site-digger.com/html/articles/20170208/135.html 背景:Excel( Excel 2007-2016)最多仅能显示100万(1,0...

xiankunzhipeng
2018/07/30
0
0
Python爬虫实战-抓取《盗墓笔记》所有章节及链接

image.png 本次以一个盗墓笔记的小说阅读网(http://seputu.com)为例,抓取盗墓笔记的标题、章节名和链接,如下图 前提: 这是一个静态网站,标题、章节都不是由JavaScript动态加载的,无代...

爱吃西瓜的番茄酱
2017/11/06
0
0
基于Excel2013的数据导入

请确认安装好Excel2013,如何安装Excel2013请自行上网搜索。 Excel2013下载网盘链接: https://pan.baidu.com/s/1MdF2pTxlJqZMqILcW2PeBA 密码: rxuv 这个安装包中有破解软件KMSpico,当中有使...

潇洒坤
2018/06/16
0
0
CSV、JSON文件导入到mongo数据库

首先生成一个文本文件,可以是json或者csv的,每行一条数据,很好整理吧,用一般的文本编辑器或者从office中都可以生成。 然后执行下面的导入命令: /usr/local/mongodb/bin/mongoimport -d ...

千山万水
2014/08/14
0
0
pandas读取csv文件数据的方法及注意点

pandas是一个高效的数据分析工具。基于其高度抽象的数据结构(点击这里了解DataFrame数据结构),几乎可以对数据进行任何你想要的操作。 由于现实世界中数据源的格式非常多,pandas也支持了不...

schnauzer
2018/07/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周三乱弹 —— 风扇写着先生请自爱

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @蚂蚁哈哈哈 :分享陈奕迅的单曲《落花流水》 《落花流水》- 陈奕迅 手机党少年们想听歌,请使劲儿戳(这里) @车谷 :我发现每天上班都好困 ...

小小编辑
今天
50
5
centos7重置密码、单用户模式、救援模式、ls命令、chmod命令

在工作当中如果我们错误的配置了文件使服务器不能正常启动或者忘记密码不能登录系统,如何解决这些问题呢?重装系统是可以实现的,但是往往不能轻易重装系统的,下面用忘记密码作为例子讲解如...

李超小牛子
今天
4
0
Python如何开发桌面应用程序?Python基础教程,第十三讲,图形界面

当使用桌面应用程序的时候,有没有那么一瞬间,想学习一下桌面应用程序开发?行业内专业的桌面应用程序开发一般是C++,C#来做,Java开发的也有,但是比较少。本节课会介绍Python的GUI(图形用...

程序员补给栈
今天
9
0
kafka在的使用

一、基本概念 介绍 Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。 这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统...

狼王黄师傅
今天
3
0
Android JNI总结

0x01 JNI介绍 JNI是Java Native Interface的缩写,JNI不是Android专有的东西,它是从Java继承而来,但是在Android中,JNI的作用和重要性大大增强。 JNI在Android中起着连接Java和C/C++层的作...

天王盖地虎626
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部