数据分析入门之数据可视化(散点图、折线图、饼图、柱状图、直方图)

1、散点图

■散点图( scatter diagram) : 是以一个变量为横坐标,另一变量为纵坐标,利用散点(坐标点)的分布形态反映变量关系的一种图形。

  • 散点图绘图函数:
plot(x,y,'.',color=(r,g,b))
plt.xlabel('x轴标签')
plt.ylabel('y轴标签')
plt.grid(True)
  • plot参数说明:
    ●x、y,X轴和Y轴的序列
    ●’.’、 ‘o’ ,小点还是大点
    ●color ,散点图的颜色,可以用rgb定义,也可以用英文字母定义,(red,green,blue)~0到1,和其他语言0到255区分一下

1.1、导入数据

import matplotlib
from pandas import read_csv
import matplotlib.pyplot as plt

data = read_csv("F:\\数据分析\\数据分析3\\章节5数据可视化\\5\\5.1\\data.csv")

在这里插入图片描述

1.2、数据可视化

plt.plot(data['广告费用'],data['购买用户数'],'.')#把数据赋给(x,y)

在这里插入图片描述

1.3、设置参数

plt.plot(data['广告费用'],data['购买用户数'],'.')#把数据赋给(x,y)
plt.xlabel('广告费用')#设置x轴的名称
plt.ylabel('购买用户数')
plt.grid(True)#呈现网格线
plt.show()#可视化展示

在这里插入图片描述

1.4、自定义样式

# plt.plot(data['广告费用'],data['购买用户数'],'o',color='yellow')#把数据赋给(x,y),'o'表示圆圈,color显示颜色
# plt.plot(data['广告费用'],data['购买用户数'],'*',color=(1,0.6,0.2))#把数据赋给(x,y),'*'呈现*,rgb表示颜色
plt.plot(data['广告费用'],data['购买用户数'],'d',color='#aabbcc')#把数据赋给(x,y),'d'呈现菱形,rgb表示颜色
plt.xlabel('广告费用')#设置x轴的名称
plt.ylabel('购买用户数')
plt.grid(True)#呈现网格线
plt.show()#可视化展示

在这里插入图片描述

1.5、解决中文不能显示

•如果中文不能正常显示,可以加上

font = {'family': 'MicroSoft Yahei',
       'weight': 'bold',
       'size': 12}
matplotlib.rc("font", **font)

•如果中文和正负不能正常显示,可以加上

from matplotlib import rcParams
#支持中文
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号



2、折线图

■折线图:也称趋势图,它是用直线段将各数据点连接起来而组成的图形,以折线方式显示数据的变化趋势。

  • 折线图绘图函数:
    •plot(x,y,style,color,linewidth);
    •title(‘图的标题’)

  • 参数说明:
    •style,画布的样式;
    •color,画线的颜色
    •linewidth,线的宽度

  • style样式:

参数注释
-连续的曲线
连续的虚线
-.连续的用带点的曲线
:由点连成的曲线
.小点,散点图
o大点,散点图
,像素点(更小的点)的散点图
*五角星的点,散点图

2.1、导入数据

import pandas
from pandas import read_csv
import matplotlib.pyplot as plt

data = read_csv("F:\\数据分析\\数据分析3\\章节5数据可视化\\5\\5.2\\data.csv")

在这里插入图片描述

2.2、日期类型转换

对日期格式进行转化,变成日期类型,字符型不能直接使用

data['购买日期'] = pandas.to_datetime(data['日期'])

在这里插入图片描述

2.3、数据可视化

•顺滑的曲线

plt.plot(data['购买日期'],data['购买用户数'],'-')

在这里插入图片描述

•设置颜色

plt.plot(data['购买日期'],data['购买用户数'],'-',color='r')

在这里插入图片描述
•设置线条粗细

plt.plot(data['购买日期'],data['购买用户数'],'-',color='r',linewidth=6)

在这里插入图片描述
•增加表名

plt.plot(data['购买日期'],data['购买用户数'],'-.',color='r')
plt.title('手机销售分布图')

在这里插入图片描述


3、饼图

■饼图( Pie Graph) :又称圆形图。是一个划分为几个扇形的圆形统计图,它能够直观地反映个体与总体的比例关系。

  • 饼图绘图函数:
    • pie(x, labels, colors, explode, autopct);
  • 参数说明:
参数注释
x进行绘图的序列
labels饼图的各部分标签
colors饼图的各部分颜色,使用RGB标颜色
explode需要突出的块状序列,0为原状,非0为突出
autopct饼图占比的显示格式, %.2f :保留两位小数

3.1、导入数据

import numpy,matplotlib
from pandas import read_csv
import matplotlib.pyplot as plt

data = read_csv("F:\\数据分析\\数据分析3\\章节5数据可视化\\5\\5.3\\data.csv")

在这里插入图片描述

3.2、分组统计数量

  • 先查找有几个通信品牌,再找它对应的号码有多少个
gb = data.groupby(
    by = ['通信品牌'],
    as_index=False
)['号码'].agg({
    '用户数':numpy.size#计数
})

在这里插入图片描述

3.2、饼图展示

plt.pie(gb['用户数'],labels=gb['通信品牌'],autopct='%.2f%%')#%.2f表示保留两位小数,%%表示%

在这里插入图片描述


4、柱状图

■柱形图:是一种以长方形的单位长度,根据数据大小绘制的统计图,用来比较两个或以上的数据(时间或类别)。

  • 柱形图绘图函数:
    • bar(left,height,width,color) #竖向柱形图
    • barh(bottom,width,height,color) #横向柱形图
  • 参数说明:
参数注释
leftx轴的位置序列, 一般采用arange函数产生一个序列
heighty轴的数值序列,也就是柱形图的高度,一般就是我们需要 展示的数据
width柱形图的宽度, 一般设置为1即可
color柱形图填充颜色

4.1、导入数据

import numpy,matplotlib
from pandas import read_csv
import matplotlib.pyplot as plt

data = read_csv("F:\\数据分析\\数据分析3\\章节5数据可视化\\5\\5.4\\data.csv")

在这里插入图片描述

4.2、分组求和

gb = data.groupby(
    by = ['手机品牌'],
    as_index=False
)['月消费(元)'].agg({
    '月消费':numpy.sum #求和
})

在这里插入图片描述

4.3、建立X轴的序列

index = numpy.arange(gb['月消费'].size)

在这里插入图片描述

4.4、数据可视化

  • 竖向柱形图
plt.bar(index,gb['月消费'],1,color='G')

在这里插入图片描述

  • 移动柱形图(-向右;+向左,往原点靠拢)
plt.bar(index,gb['月消费'],1,color='G')
plt.xticks(index + 1/2,gb.index)

在这里插入图片描述

  • 添加横轴标签
plt.bar(index,gb['月消费'],1,color='G')
plt.xticks(index,gb.手机品牌)#加上X标签

在这里插入图片描述

  • 横向柱形图
plt.barh(index,gb['月消费'],1,color='r')
plt.yticks(index,gb.手机品牌)

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200111143558858.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2F5b3VsZXlhbmc=,size_16,color_FFFFFF,t_70

4.5、三维柱状图

import numpy,matplotlib
from pandas import read_csv
from matplotlib import pyplot as plt

data = read_csv("F:\\数据分析\\数据分析3\\章节5数据可视化\\5\\5.4\\data.csv")

d1 = '手机品牌'
d2 = '通信品牌'
v = '月消费'

gb = data.groupby(by = [d1,d2])['月消费(元)'].agg({v:numpy.sum})#求对用的月消费之和

d1_size = gb.index.levels[0].size
d2_size = gb.index.levels[1].size

index = numpy.arange(d1_size)
colors = ['r','g','b']#定义颜色

for i in range(0,d2_size):#遍历每一种颜色的数据
    print (i)
    subgb = gb[v][gb.index.labels[1] == i]
    bar = plt.bar(index*d2_size + i,subgb,color=colors[i])
    
index1 = numpy.arange(d1_size)*d2_size
plt.xticks(index1 + 3/2,gb.index.levels[0])

plt.title('手机品牌对应通信品牌月消费之和')
plt.xlabel('手机品牌')
plt.ylabel('月消费之和')

plt.legend(gb.index.levels[1])#显示图列
plt.show()

在这里插入图片描述

4.6、堆叠柱状图

import numpy,matplotlib
from pandas import read_csv
from matplotlib import pyplot as plt

data = read_csv("F:\\数据分析\\数据分析3\\章节5数据可视化\\5\\5.3\\data.csv")

d1 = '手机品牌'
d2 = '通信品牌'
v = '月消费'

gb = data.groupby(by = [d1,d2])['月消费(元)'].agg({v:numpy.sum})#求对用的月消费之和

d1_size = gb.index.levels[0].size
d2_size = gb.index.levels[1].size

index = numpy.arange(d1_size)
colors = ['r','g','b']#定义颜色
bsum = index*0.0

for i in range(0,d2_size):#遍历每一种颜色的数据
    print(i)
    subgb = gb[v][gb.index.labels[1] == i]
    bar = plt.bar(index,subgb,color=colors[i],bottom=bsum)
    bsum = subgb + 1
    
plt.xticks(index,gb.index.levels[0])


plt.title('手机品牌对应通信品牌月消费之和')
plt.xlabel('手机品牌')
plt.ylabel('月消费之和')

plt.legend(gb.index.levels[1])#显示图列
plt.show()

在这里插入图片描述

5、直方图

■直方图(Histogram) :是用一系列等宽不等高的长方形来绘制,宽度表示数据范围的间隔,高度表示在给定间隔内数据出现的频数,变化的高度形态表示数据的分布情况。

  • 直方图绘图函数:
    • hist(x.color,bins,cumulative=False)
  • 参数说明:
参数注释
x需要进行绘制的向量
color直方图的填充颜色
bins设置直方图的分组个数
cumulative设置是否累计计数,默认是False

5.1、导入数据

import matplotlib
from pandas import read_csv
from matplotlib import pyplot as plt

data = read_csv("F:\\数据分析\\数据分析3\\章节5数据可视化\\5\\5.4\\data.csv")

在这里插入图片描述

5.2、绘制直方图

plt.hist(data['手机品牌'])

在这里插入图片描述

5.3、设置分组数

plt.hist(data['手机品牌'],bins=20)

在这里插入图片描述

5.4、累计分布

plt.hist(data['手机品牌'],bins=20,cumulative=True)

在这里插入图片描述

  • 8
    点赞
  • 141
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,针对你的问题,我可以给出以下 C++ 代码示例,实现图数据文件的输入输出操作。 假设我们的图数据文件中每一行表示一条边,格式如下: ``` <起始顶点编号> <终止顶点编号> <边权值> ``` 下面是图的定义以及文件输入输出的示例代码: ```c++ #include <iostream> #include <fstream> #include <vector> using namespace std; // 定义图的类 class Graph { public: int V; // 顶点个 vector<vector<pair<int, int>>> adj; // 存储邻接表 Graph(int V) { this->V = V; adj.resize(V); } // 向图中加入一条边 void addEdge(int u, int v, int w) { adj[u].push_back(make_pair(v, w)); } }; // 从文件中读取图的数据 Graph readGraphFromFile(string filename) { ifstream fin(filename); if (!fin) { cerr << "Failed to open file: " << filename << endl; exit(1); } int V, u, v, w; fin >> V; Graph G(V); while (fin >> u >> v >> w) { G.addEdge(u, v, w); } fin.close(); return G; } // 将图的数据写入到文件中 void writeGraphToFile(Graph& G, string filename) { ofstream fout(filename); if (!fout) { cerr << "Failed to open file: " << filename << endl; exit(1); } fout << G.V << endl; for (int u = 0; u < G.V; u++) { for (auto& p : G.adj[u]) { int v = p.first; int w = p.second; fout << u << " " << v << " " << w << endl; } } fout.close(); } int main() { // 从文件中读取图数据 Graph G = readGraphFromFile("graph.txt"); // 对图进行一些操作... // ... // 将修改后的图数据写入到文件中 writeGraphToFile(G, "output.txt"); return 0; } ``` 在上述代码中,readGraphFromFile 函接受一个文件名参,从文件中读取图的数据,然后返回一个 Graph 类型的对象。writeGraphToFile 函接受一个 Graph 类型的对象和一个文件名参,将图的数据写入到文件中。具体实现过程中,我们使用了 C++ 标准库中的 ifstream 和 ofstream 类来进行文件的输入输出操作。 希望这个例子能够对你有所帮助!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值