数据可视化 csv数据集 python学习 matplotlib学习

数据可视化,是希望通过一个直观的图例来展示自己的结论。

本实验是将一个目录下的多个数据集 中的代码修改量和软件缺陷的关系 通过数据可视化展示。

总体思路:就是先把73个项目的修改数存入churn中,然后从小到大排序,把churn里面的数据分成10份,如第一份是修改量的前百分之十,然后统计这百分之十有多少bug数

最后图是每份里面的bug数量占比

一、加载模块

import pandas as pd
import os
import matplotlib.pyplot as plt
from pylab import mpl
import csv

二、前期准备

path=r"C:\\Users\\86189\\Desktop\\学习资料\\大一\\python\\dataModified\\"
files=os.listdir(path)
churn=[]
dic={}
for j in range(0,10):
    dic[str(j*10)+"%~"+str(j*10+10)+"%"]=0
#将所有文件名存入files中

将文件夹的路径赋值给path,用os.path获取这个目录下的所有文件名 放在files中。

初始化列表churn为空列表,字典dic所有键对应的值都为0。

三、列表 字典

for i in files:
    path=r"C:\\Users\\86189\\Desktop\\学习资料\\大一\\python\\dataModified\\"+i
    with open(path,'r',encoding='utf-8')as stucsv:
        reader=csv.reader(stucsv)
        for row in reader:
            la=float(row[6])
            ld=float(row[7])
            if row[16]=='0':
                la=int(la)
                ld=int(ld)
            churn.append(la+ld)
    churn=sorted(churn)
    #将有软件缺陷的代码修改量存入churn,并排序.
    #其中含有软件缺陷的是float型数字,用来标记

    length=len(churn)
    a=0
    b=10
    c=0
    d=int(length/10)
    e=int(length/10)
    for item in churn:
        if d<length:
            if item>churn[d] and a<90:
                a=a+10
                c=d
                d=d+e
                count=0
        if d<length:
            if item>=churn[c] and item<=churn[d] :
                if '.'in str(item):
                    dic[str(a)+"%~"+str(a+10)+"%"]=dic[str(a)+"%~"+str(a+10)+"%"]+1
                    
    print(i+' 正在运行')
    #将每个项目的修改量的0~10%,10~20%……,每一段里面 总的软件缺陷数量 存入字典

写了一个循环,每一个文件对应一次循环。

将代码修改量(la+ld)存入churn列表中,然后从小到大进行排序,将churn里的所有项目分为十份 为:0~10%,10~20%……,将每一份里的代码修改量存入字典。

四、画图

labels=list(dic.keys())
sizes=list(dic.values())
mpl.rcParams['font.sans-serif'] = ['SimHei']
plt.title('代码修改量和软件缺陷的关系')
plt.pie(sizes,labels=labels,autopct='%1.1f%%',shadow=False, textprops={'fontsize': 8, 'color': 'w'},startangle=90)
plt.axis('equal')
plt.legend(loc='lower right')
plt.show()
#将上面字典的键名作为labels,画图

五、完整代码

import pandas as pd
import os
import matplotlib.pyplot as plt
from pylab import mpl
import csv
 


path=r"C:\Users\86189\Desktop\学习资料\大一\python\\dataModified\\"
files=os.listdir(path)
churn=[]
dic={}
for j in range(0,10):
    dic[str(j*10)+"%~"+str(j*10+10)+"%"]=0
#将所有文件名存入files中



for i in files:
    path=r"C:\Users\86189\Desktop\学习资料\大一\python\\dataModified\\"+i
    with open(path,'r',encoding='utf-8')as stucsv:
        reader=csv.reader(stucsv)
        for row in reader:
            la=float(row[6])
            ld=float(row[7])
            if row[16]=='0':
                la=int(la)
                ld=int(ld)
            churn.append(la+ld)
    churn=sorted(churn)
    #将有软件缺陷的代码修改量存入churn,并排序.
    #其中含有软件缺陷的是float型数字,用来标记

    

    length=len(churn)
    a=0
    b=10
    c=0
    d=int(length/10)
    e=int(length/10)
    for item in churn:
        if d<length:
            if item>churn[d] and a<90:
                a=a+10
                c=d
                d=d+e
                count=0
        if d<length:
            if item>=churn[c] and item<=churn[d] :
                if '.'in str(item):
                    dic[str(a)+"%~"+str(a+10)+"%"]=dic[str(a)+"%~"+str(a+10)+"%"]+1
                    
    print(i+' 正在运行')
    #将每个项目的修改量的0~10%,10~20%……,每一段里面 总的软件缺陷数量 存入字典



labels=list(dic.keys())
sizes=list(dic.values())
mpl.rcParams['font.sans-serif'] = ['SimHei']
plt.title('代码修改量和软件缺陷的关系')
plt.pie(sizes,labels=labels,autopct='%1.1f%%',shadow=False, textprops={'fontsize': 8, 'color': 'w'},startangle=90)
plt.axis('equal')
plt.legend(loc='lower right')
plt.show()
#将上面字典的键名作为labels,画图

六、结果展示

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习的小颜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值