数据分析----入门篇02

本文介绍了如何在matplotlib中解决中文字符显示问题,以及如何绘制折线图、散点图、条形图、柱状图和直方图。同时提到了seaborn和plotly库中的柱状图对比。
摘要由CSDN通过智能技术生成

matplotlib的使用

matplotlib默认不支持中文字符,因为默认的英文字体无法显示汉字

设置字体的样式方法一:

font = {'family':'MicroSoft YaHei',

        'weight':'bold',

        'size':'12'}

matplotlib.rc('font', **font)

方法二(设置中文的方法):

plt.rcParams['font.sans-serif'] = 'SimHei'

plt.rcParams['axes.unicode_minus'] = False

matplotlib能够绘制折线图,散点图,柱状图,直方图,箱线图,饼图等

(折线图,散点图,条形图,柱状图,多个柱形图,直方图)

1)首先导包

from matplotlib import pyplot as plt

2)然后准备数据x,y

3)再设置图的大小和分辨率

设置图的大小和分辨率代码:

      plt.figure(figsize=(20,8),dpi=80)

figure指我们画的图

传入dip参数,让图像更加清晰

dpi(dots per inch):每英寸点数 

1、折线图

# 折线图的绘制
plt.plot(x,y)

# plt.xticks(x) -------设置x的刻度      plt.yticks(y)---------设置y的刻度
plt.xticks(x[::2])

# 显示图片效果
plt.show()

(加水印,改变折线样式,加文本注释的方法):

img = plt.imread('dog (1).jpg')
plt.figimage(img,700,100,origin='upper',alpha=0.3)
# 加水印

#                                            线条宽度        线条样式
plt.plot(x,y,label = '我的',color = 'green',linewidth = '5',linestyle = ':')
plt.plot(x,y2,label = '
同桌的',color = 'red',linewidth = '10',linestyle = '-.')


plt.text(0,1,'他好帅',color = 'y',size = '10',ha = 'center',va = 'center',rotation = 25)

                            # rotation为透明度

2、散点图

plt.scatter(x,y)

3、条形图

准备好数据a,b

plt.barh(a[::-1],b[::-1],height=0.3,color = 'orange')

plt.yticks(range(len(a)),a[::-1])

条形图:

(条形图排序———提升版):

准备好数据a,b(b是数值)

# 1.让两个数据产生关联(字典)
a2 = dict(zip(a,b))

# 2、 b进行排序

new_b = sorted(b)

print(new_b)

# 3. 把 new_b中的每一个值去 a2中找对应的键,组成新的列表,即排完序后的键

new_a = []

for i in new_b:

        for j in a2:

                if a2[j] == i:

                        new_a.append(j)

print(new_a)

plt.figure(figsize=(20,8))

plt.barh(new_a,new_b,height=0.3,color = 'orange')

plt.yticks(range(len(a)),new_a)

plt.show()

4、柱状图

plt.bar(a,b,width=0.2,color = 'orange')

plt.xticks(range(len(a)),a,rotation = 270)

柱状图:

5、多个柱形图

准备好三组数据b_14,b_15,b_16

# 三组数据的刻度位置
x_14 = range(len(a))
x_15 = [i +
0.2 for i in x_14]
x_16 = [j +
0.4 for j in x_14]

# 绘制这三组数据
plt.bar(x_14,b_14,width=0.2,label = '914')
plt.bar(x_15,b_15,
width=0.2,label = '915')
plt.bar(x_16,b_16,
width=0.2,label = '916')

a = ['猩球崛起3:终极之战','敦刻尔克','蜘蛛侠:英雄归来','战狼2']

plt.xticks(x_15,a)

# 设置图例
plt.legend(loc = 'best')

多个柱形图:

6、直方图

准备好数据a

# d 代表组距
d = 3
# 组数 = 极差/组距     100个数据以内尽可能分5~12组比较合适
nums = (max(a)-min(a))//3  # 下整除,保留整数

plt.hist(a,nums)

#                      把最后一个刻度加上
plt.xticks(range(min(a),max(a)+d,d))  # 调网格大小
# 加网格线
plt.grid(alpha = 0.3)
plt.show()

直方图:

---------------------------------------------------------------------

---------------------------------------------------------------------

三个绘图库的差别

seaborn中的柱状图:

import seaborn as sns

import matplotlib.pyplot as plt

cate = ['a','b','c','d']

data = [20,25,35,10]

sns.barplot(x=cate,y=data)

plotly中的柱状图:

import plotly.graph_objects as go

cate = ['a','b','c','d']

data = [20,25,35,10]

fig = go.Figure(data=[go.Bar(x=cate,y=data)])

fig.update_layout(title='柱状图',xaxis_title='x轴',yaxis_title='y轴')

matplotlib中的柱状图:

import matplotlib.pyplot as plt     

cate = ['a','b','c','d']

data = [20,25,35,10]

plt.bar(cate,data)

numpy中数组的创建

先导包:

import numpy as np

第一种创建array数组的方式:

t1 = np.array([1,2,3,4,5,6],dtype='int64')

print(t1)

print(t1.dtype)

第二种创建数组的方式:

t2 = np.array(range(1,6))

t2

第三种创建数组的方式:

t3=np.arange(1,6)

t3

结果如图:

数组的形状:

类型的问题:

小数问题:

几维数组的问题:

numpy数组的运算

同样,先导包:

import numpy as np

一维数组:

t1=np.arange(12)

print(t1.shape)

二维数组:

t2 = np.array([[1,2,3],[4,5,6]])

print(t2)

print(t2.shape)

在创建时指定数组的形状:

t5 = np.arange(24).reshape((2,3,4))

print(t5)

降至一维数组:

运算中注意的点:

注意:

4*6 和 2*6不能相互运算

4*6 和 1*6 可以相互运算

4*6 和 4*1 可以相互运算

轴的概念:

在numpy中可以理解为方向,使用0,1,2…数字表示

numpy读取数据

先把数据导入进来:

取下标为1的行:

取多行,取列的一些方法:

numpy中数组的转置

二维数组转置方法:

实现效果如下:

 

  • 17
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值