Python数据分析入门笔记

python画统计图

	在我刚学python画图的时候觉得这个就是很简单的语法,稍微调整一下就可以画出不同的图,不以为意,但是当我真实地去练习数据分析的时候发现,画图技能是决定你是否能做出一个有效模型的关键,在你面对一堆数据的时候,你得知道什么数据适合画什么图形来分析,画出的图形是否能让你明确看出数据的特点.所以这一节的重点是看这几种统计图的特点和区别.

折线图

简单绘图

python可视化主要有两个包matplotlib 和 seaborn,折线图主要用的是matplotlib.它和matlab的命令相似,容易上手.
其中matplotlib的pyplot模块一般是最常用的,可以方便用户快速绘制二维表。
这里先导入项目的包,

import matplotlib.pyplot as plt
import matplotlib
import pandas as pd
import numpy as np
from datetime import datetime, date

例1:

x = np.arange(1,10,1)
y = np.arange(3,12,1)
plt.plot(x, y)  #函数作图
plt.show()  #show函数展示出这个图,如果没有这行代码,则程序完成绘图,但看不到

输出结果:
在这里插入图片描述
在某些python运行的环境 在关闭show()函数弹出的图像窗口前,show()函数后面的代码不会运行,直到用户关闭图像窗口,才会继续。
所以在画新图的时候,推荐加上plt.close(),把之前的图关掉

用plt.savefig()将当前的Figure对象保存成图像文件,图像格式由图像文件的扩展名决定。但是,函数一定要在plt.show()函数之前,不然show之后图形也就被释放掉了,再保存就保存不到什么了.

例2:

plt.close()
plt.plot(x, y)  
plt.savefig("test.png", dpi=120)
plt.show()  

输出结果:
在这里插入图片描述
在同一个文件夹下面就会出现这个图片了.

细节调整

上图画出来的效果是直接为默认值,图形的细节也可以调整.我们可以在 plot 函数里设置一些参数,如 color、linestyle、marker、linewidth 等.

例3

plt.close()
x = [1, 2, 3, 4]
y = [1,-2, 3, -4]
plt.plot(x, y, color="r", linestyle="--", marker="*", linewidth=1.0) 

输出结果:
在这里插入图片描述

坐标轴的调整

除了线条的细节之外,我们还可以调整坐标轴的一些参数,比如坐标 轴的范围、标题和间隔。默认情况下,坐标轴的范围是数据的最小值 和最大值,这会导致画出来的线条顶格子,有时标记可能会看不见, 所以需要手动设置一下坐标轴的范围。使用 plt.axis 函数,里面填 的四个数字分别代表 x 左,x 右,y 下,y 上的值.

例4:

#坐标轴的范围
plt.close()
plt.axis([-1, 6, -6, 6]) #x左,x右,y下,y上
plt.plot(x, y, color="r", linestyle="--", marker="*", linewidth=1.0) 
plt.show()

#坐标轴的标题
plt.close()
plt.axis([-1, 6, -6, 6]) 
plt.plot(x, y, color="r", linestyle="--", marker="*", linewidth=1.0) 
plt.xlabel('X value') 
plt.ylabel('Y value')
plt.show()

#坐标轴的间隔
plt.close()
plt.axis([-1, 6, -6, 6]) 
plt.plot(x, y, color="r", linestyle="--", marker="*", linewidth=1.0) 
plt.yticks([-6, -3, -1.8, 1, 4.22, 6])
plt.xlabel('X value') 
plt.ylabel('Y value')
plt.show()

也可以利用plt.yticks,标上某些特殊点的名称.

直方图

直方图和条形图

直方图和条形图的外表很像,但是直方图的宽度表示类别,没有意义,但是条形图的面积是有意义的不同的条形图宽度乘以长度都有不同的具体意义,长条形的高度表示频数/组距,宽度 表示组距,其长度和宽度均有意义.

绘制直方图

绘制直方图用 plt.hist()函数,其中有 6 个参数。
1.data:必选参数,绘图数据
2.bins:直方图的长条形数目,可选项,默认为 10
3.normed:是否将得到的直方图向量归一化(即每个长条形的宽度是 否相同),可选项,默认为 0,代表不归一化,显示频数(每个长条 形的宽度一样)。normed=1,表示归一化,显示频率。
4.facecolor:长条形的颜色
5.edgecolor:长条形边框的颜色
6.alpha:透明度

例5:

# 随机生成(10000,)服从正态分布的数据
data = np.random.randn(10000)
plt.close()
plt.hist(data, bins=100, normed=0, facecolor="blue", edgecolor="black", alpha=0.7)
# 显示横轴标签
plt.xlabel("interval")
# 显示纵轴标签
plt.ylabel("frequency")
# 显示图标题
plt.title("Our first histogram!")
plt.show()

输出结果:
在这里插入图片描述

水平条形图

绘制条形图的函数是 plt.barh(),其参数和直方图差不多。

例6:

price = [39.5, 39.9, 45.4, 38.9]
plt.close()
plt.barh(range(4), price, height=0.7, color='steelblue', alpha=0.8)      # 从下往上画
plt.yticks(range(4), ['Amazon', 'Ebay', 'Net-a-Porter', 'Nordstrom'])
plt.xlim(30,47)
plt.xlabel("Price")
plt.title("Price Varies in Different Websites")
plt.show()

输出结果:
在这里插入图片描述
这张图片的纵周上面标的是在每条长方体的底部,我们可以来换一下这个图形上的位置,讲名字标倒长方形的中间位置.
这里需要用到enumerate() 函数(https://www.runoob.com/python/python-func-enumerate.html).

例7:

plt.close()
plt.barh(range(4), price, height=0.5, color='steelblue', alpha=0.8)      # 从下往上画
plt.yticks([0.25, 1.25, 2.25, 3.25], ['Amazon', 'Ebay', 'Net-a-Porter', 'Nordstrom'])
plt.xlim(30,50)
plt.ylim(0,4)
plt.xlabel("Price")
plt.title("Price Varies in Different Websites")
for x, y in enumerate(price):
    plt.text(y+1,x+0.14,s = y)
plt.show()

多条曲线的绘图

例8:
大多时候,需要在同一张图中出现多条曲线,以便我们对数据有个直观的比较。那么做法非常简单,直接写多个作图函数plot()即可

import math
x = np.arange(-2 * math.pi, 2 * math.pi, 0.02)
y1 = np.sin(x)
y2 = np.cos(x)

plt.close()
plt.axis([-10, 10, -1.5, 1.5])


plt.xlabel("x")
plt.ylabel("y")

plt.plot(x, y1, color="r", linestyle="-", linewidth=1)
plt.plot(x, y2, color="b", linestyle="-", linewidth=1)

plt.show()

输出结果:
在这里插入图片描述

这里主要介绍了几种常见的统计图的绘制方法,但是问题的难点在于,你得了解这几种统计图分别适合不同的什么情况,然后根据数据的特点挑选合适的图.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值