【Python 数据科学】数据可视化seaborn


参考: http://seaborn.pydata.org/index.html

一、分布

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
#先给txt文件添加字段名  再导入文件 以空格为分隔符sep='\s+'
colums=['user_id','order_dt','order_products','order_amount']
df=pd.read_table('CDNOW_master.txt',names=colums,sep='\s+')
df.head()
user_idorder_dtorder_productsorder_amount
0119970101111.77
1219970112112.00
2219970112577.00
3319970102220.76
4319970330220.76

1 distplot 概率分布图

#分布---1 distplot 概率分布图 kde=False纵坐标直接是数量  反之是一个比例
sns.distplot(df.order_amount,kde=False,color='m')
<matplotlib.axes._subplots.AxesSubplot at 0x20dd1a714a8>

在这里插入图片描述

2 kdeplot 概率密度图

#分布----2 kdeplot 概率密度图
sns.kdeplot(df.order_amount)
<matplotlib.axes._subplots.AxesSubplot at 0x20dd1f952e8>

在这里插入图片描述

#将df表按照user_id分组后,合计
grouped_user=df.groupby('user_id').sum()
grouped_user.head()
order_dtorder_productsorder_amount
user_id
119970101111.77
239940224689.00
311983360216156.46
4798822337100.50
521968613729385.61

3、jointplot联合密度图

#分布----3、jointplot联合密度图
#kind='reg'拟合散点回归
sns.jointplot(grouped_user.order_products,grouped_user.order_amount,kind='reg')
<seaborn.axisgrid.JointGrid at 0x20dce090cf8>

在这里插入图片描述

#解析日期,将其转换成固定格式的日期型数据,或者在导入时用parse_dates,date_parser解析
df['order_dt']=pd.to_datetime(df['order_dt'],format='%Y%m%d')
#数据透视表
rfm=df.pivot_table(index='user_id',values=['order_amount','order_dt','order_products'],
                  aggfunc={'order_amount':'sum','order_dt':'max','order_products':'sum'})
rfm['R']=(rfm.order_dt.max()-rfm.order_dt)/np.timedelta64(1,'D')
rfm.rename(columns={'order_products':'F','order_amount':'M'},inplace=True)
rfm
Morder_dtFR
user_id
111.771997-01-011545.0
289.001997-01-126534.0
3156.461998-05-281633.0
4100.501997-12-127200.0
...............
2356636.001997-03-252462.0
2356720.971997-03-251462.0
23568121.701997-04-226434.0
2356925.741997-03-252462.0
2357094.081997-03-265461.0

23570 rows × 4 columns

#jointplot联合密度图
#kind='reg'拟合散点回归
sns.jointplot(rfm.R,rfm.F,kind='reg')
<seaborn.axisgrid.JointGrid at 0x20dd2afe1d0>

在这里插入图片描述

4、pairplot多变量图

#4、pairplot多变量图
#hue多种类
sns.pairplot(rfm[['R','F','M']])
<seaborn.axisgrid.PairGrid at 0x20dd2d287f0>

在这里插入图片描述

二、分类

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

#防止文字不显示 
plt.rcParams['font.sans-serif']=['SimHei']
df=pd.read_csv('cy.csv',encoding='gbk')
df.head()
ID城市类型店名点评人均口味环境服务
01北京私房菜梧桐宇私房菜45.080.07.37.37.1
12北京私房菜小东北私房菜1.035.06.96.96.9
23北京私房菜辣家私房菜1.0NaN6.96.96.9
34北京私房菜鸿福天原NaNNaNNaNNaNNaN
45北京私房菜虾而美(北京)餐饮管理有限公司NaNNaNNaNNaNNaN

1、boxplots箱线图

#过滤出两个城市的数据
df2=df.query("(城市=='上海')|(城市=='北京')")
#分类-----1、boxplots箱线图
plt.figure(figsize=(20,5))
#data=df 引用的数据来源  hue对比
sns.boxplot(x='类型',y='口味',data=df2,hue='城市')
<matplotlib.axes._subplots.AxesSubplot at 0x1bef114d898>

在这里插入图片描述

2、violinplot提琴图

#分类----2、violinplot提琴图  日本菜评价比较集中  palette调色盘  split分裂将两种数据拼接在一起,对比更直观
plt.figure(figsize=(20,5))
sns.violinplot(x='类型',y='口味',data=df2,hue='城市',palette='muted',split=True)
<matplotlib.axes._subplots.AxesSubplot at 0x1beef17d470>

在这里插入图片描述

3、factorplot因子图

#分类-----4、factorplot因子图
#失效 plt.figure(figsize=(20,5)),它自带size参数
#kind='box'将因子图转化为箱线图  aspect=2长宽比
sns.factorplot(x='类型',y='口味',hue='城市',data=df2,size=8,kind='box',aspect=2 )
<seaborn.axisgrid.FacetGrid at 0x1bef1e2e6d8>

在这里插入图片描述

#kind='violin' 转化为提琴图  col='城市'按城市分子图 col_wrap=4每列显示4个
sns.factorplot(x='类型',y='口味',data=df,size=8,kind='violin',aspect=2,col='城市',col_wrap=4 )
<seaborn.axisgrid.FacetGrid at 0x1bef1ed66a0>

在这里插入图片描述

4、barplot柱形图

##分类----3、barplot柱形图
plt.figure(figsize=(20,5))
sns.barplot(x='类型',y='口味',hue='城市',data=df2)
<matplotlib.axes._subplots.AxesSubplot at 0x1befcbd6198>

在这里插入图片描述

三、线性

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
#防止文字不显示 
plt.rcParams['font.sans-serif']=['SimHei']
df=pd.read_csv('cy.csv',encoding='gbk')

df2=df.query("(城市=='上海')|(城市=='北京')")

1.回归图

#回归图 order=2二次函数(曲线)  df2.query()筛选后的数据 row以行的方式按照城市排列 col以列的方式按照城市排列
sns.lmplot(x='环境',y='口味',data=df2.query('点评<2000'),row='城市',order=2)
<seaborn.axisgrid.FacetGrid at 0x19b89bf17b8>

在这里插入图片描述

2.热力图

pt=df.pivot_table(index='城市',columns='类型',values='口味',aggfunc='mean')
#heatmap热力图  annot=True显示数值
plt.figure(figsize=(20,10))
sns.heatmap(pt,annot=True)
<matplotlib.axes._subplots.AxesSubplot at 0x19b8a8a1278>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值