微信账单分析

科二挂了,六级过了,真是大喜大悲的一天啊,下午躺了一下午。

这次写的是用python来做微信账单分析,以我七月份的消费为例,进行分析。
最终达到的效果如下,为了避免泄露博主隐私,消费记录进行了打码
微信账单分析_第1张图片
这里是用python进行分析,配合使用pyecahrts进行分析
微信账单是从微信钱包里导出来的,微信——>支付——>钱包——>账单,导出来的文件是csv格式,以下是部分的截图。
微信账单分析_第2张图片
导入文件,这里写了一个读取的函数,分析上表,我们可以看到实际数据是从第18行进行记录的,因此这里我们写一个count,当count到达17以后,就进行下一步的处理。

#coding:utf8
import csv
def read_csv(filename):
    csv_file = csv.reader(open(filename,encoding='UTF-8'))
    count=0
    for line in csv_file:   #数据类型是列表
        if count >=17:
            #print(line[0])  #从17行开始,为主要的内容
            savedata(line)
        count+=1

上面的savedata函数是用来分类数据,将其分为“收入”,“支出”,同时这里新建几个全局变量,用来记录分类的结果,并用于之后的分析

#声明全局变量
#支出记录
paymentlist=[]
#收入记录
incomelist=[]
#支出多少笔数据
paymentnum=0
pay=0
#收入多少笔数据
incomenum=0
income=0
def savedata(line):
    global paymentnum
    global incomenum
    print(line[4])
    if  line[4]=='支出':
        paymentlist.append(line)
        paymentnum+=1
    else:
        incomelist.append(line)
        incomenum+=1

以下是收入、支出各自求和的函数,我们分析这个钱,前面有个符号,这是我们不用的,因此是从第1个字符进行读取,且需要转换为浮点型,之前是字符串型。
在这里插入图片描述

#收入求和
def getPayMentlist():
    all=0
    for item in paymentlist:
        # print(float(item[5][1:]))
        all=all+float(item[5][1:])
    print(all)
    return all
#支出求和
def getIncomelist():
    all=0
    for item in incomelist:
        # print(float(item[5][1:]))
        all=all+float(item[5][1:])
    print(all)
    return all

以下的函数做到了各个商铺的消费、支出分类,以及最大消费的识别,使用的是字典,同样定义了一个全局变量。

#支出明细归纳汇总
dict1={}
def getPayment_listDetail():
    for item2 in paymentlist:
        x=dict1.get(item2[2])
        if x ==None:
            #如果没有这个key,就对字典进行赋值
            dict1[item2[2]]=float(item2[5][1:])
        else:
            #字典中有key对应的value,取出value+现在的值
            dict1[item2[2]]=dict1[item2[2]]+float(item2[5][1:])

    max=0
    maxtitle=""
    for i in dict1:
        print(i+':',dict1[i])
        temp=dict1[i]
        if max

主函数的执行

read_csv("微信支付账单(20190701-20190801).csv")  #加载主要数据
print("支出笔数:{}".format(paymentnum))
print("收入笔数:{}".format(incomenum))
getPayMentlist()
getIncomelist()
getPayment_listDetail()

下面就是pyecahrts的使用,这个安装自行百度,这里可视化的是前10个的数据,没有按照消费的大小进行。

from pyecharts import Pie
#list是转换为列表
attr = list(dict1.keys())[:10]
v1 = list(dict1.values())[:10]
pie = Pie("饼图示例")
pie.add("",attr,v1,is_label_show=True)
pie.render("七月份消费记录.html")

至此,完成。

你可能感兴趣的:(学生,自学)