文章目录
pandas中的绘图函数
内容概要
Series和DataFrame都有一个都有一个生成各类图标的plot方法,默认情况下锁生成的都是线形图
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
线形图
简单示例Series图例表示.plot()
线性图可以用来表示增长的趋势或者是y和x轴的关系体现
x = np.linspace(0,10,11)
#x=y
pd.Series(x).plot()
x = np.linspace(-np.pi,np.pi)
pd.Series(np.sin(x)).plot()
pd.Series(np.cos(x)).plot()
x = np.linspace(-np.pi,np.pi)
pd.Series(np.exp(-x**2)).plot(color='red',alpha=.6)
简单的DataFrame图标实例.plot()
#DataFrame中的每一列就是一个Series
X = pd.DataFrame(np.random.randint(0,150,(100,3)))
X.plot()
柱状图
DataFrame柱状图例
- ‘line’ : line plot (default)
- ‘bar’ : vertical bar plot
- ‘barh’ : horizontal bar plot
- ‘hist’ : histogram
- ‘box’ : boxplot
- ‘kde’ : Kernel Density Estimation plot
- ‘density’ : same as ‘kde’
- ‘area’ : area plot
- ‘pie’ : pie plot
- ‘scatter’ : scatter plot
- ‘hexbin’ : hexbin plot
X = pd.DataFrame(np.random.randint(10,100,(12,2)),columns=['A','B'],index=np.arange(1,13))
#index是时间序列
X.plot(kind='bar')
X.plot(kind='barh')
直方图
首先直方图只需要一维的数据,统计基数图形
x = np.random.randint(0,10,10)
#bins=20 间隔
pd.Series(x).plot(kind='hist',bins=20)
随机百分比密度图
x = np.random.randint(0,10,10)
pd.Series(x).plot(kind='hist',bins=20)
pd.Series(x).plot(kind='kde')
这两张表经常会被画在一起,直方图以规格形式给出(以便画出密度图),然后在再其上绘制核密度估计。
接下来看看一个由两个不同de 标准正太正太分布组成的双峰分布。
np.random.normal()正太分布函数
直方图hist,函数中心必须添加属性normed = True
pd.Series(x).plot(kind='hist',bins=20,normed=True)
pd.Series(x).plot(kind='kde')
散布图
机器学习使用的比较多的一种图形
散布图可以描述数据的分布状态和数据的增长趋势以及x和y轴的关系
import seaborn as sns
汽车排放量越小,行驶的距离就越远
mpg = sns.load_dataset('mpg')
mpg.plot(x='mpg',y='displacement',kind='scatter')
iris = sns.load_dataset('iris')
#iris鸢尾花 150个样本 一个三个类别 每种花50个样本
#x和y 不相关
plt.scatter(iris.iloc[:,0],iris.iloc[:,1],c=iris.iloc[:,-1].astype('category').cat.codes)
iris.plot(x='petal_length',y='petal_width',kind='scatter')
散布图 善不图是观察两个一维数据列之间的关系的有效方法
注意是用kind='scatter' , 给标签columns
散布图矩阵,当有多个时,两两点之间的联系
函数:pd.plotting.scatter_matrix(),注意参数diagnol:对角线
#y轴 == x轴 完全相关
x = np.linspace(0,10,10)
plt.scatter(x=x,y=x)
#y轴 和 x轴 幂次相关
x = np.linspace(0,10,10)
plt.scatter(x=x,y=x**2)
x = np.linspace(0,10,10)
plt.scatter(x=x,y=x**.5)
a=pd.plotting.scatter_matrix(iris,figsize=(18,18),diagonal='kde')
#鸢尾花的4列互相对比
#比较的是列和列之间的相关性
#因果问题 相关问题
#比如说:电商的运营,发现相关性的事情,广州的人一到夏季,在网上买凉茶
#很多的相关性问题可以得到因果问题
#公交车司机
箱线图(补充)
male = np.random.randint(25,55,20)
male
female = np.random.randint(22,42,20)
female
data = np.c_[male,female]
data
#检测本公司男性和女性的年龄范围
df = pd.DataFrame(data)
df.plot.box(title="age")#中间那条线是中位数