小言_互联网的博客

Python数据可视化(二):Pandas和Seanborn

555人阅读  评论(0)

要准备的数据文件

  • olympics.csv

    链接:https://pan.baidu.com/s/1Iygq4Ssf_hf_U3jpBLXKvw
    提取码:b0ye
    复制这段内容后打开百度网盘手机App,操作更方便哦

  • housing.csv

    链接:https://pan.baidu.com/s/16ZpSeZoDtHpKFl7YeB4MnA
    提取码:192z
    复制这段内容后打开百度网盘手机App,操作更方便哦

一.数据可视化基础

1.常见图形-线形图 柱状图及饼状图

import pandas as pd
import matplotlib.pyplot as plt

#读取数据文件
oo = pd.read_csv('C:\\Users\\霉偷煤南\\Desktop\\pandas_code_data\\code_data\\data\\olympics.csv',skiprows=4)

#作布尔筛选
fo = oo[oo.Edition==1896]

#参数 fo.Sport.value_counts():选取pandas读取数据的一个属性 然后会根据该属性去绘图、kind:图线的类型
#kind=”line" 代表线型图
fo.Sport.value_counts().plot(kind='line')

#显示图线
plt.show()

#kind="bar" 代表柱状图
fo.Sport.value_counts().plot(kind='bar');

#kind="bar" 代表变换x、y轴位置的柱状图 
fo.Sport.value_counts().plot(kind='barh');

#kind="pie" 代表饼状图
fo.Sport.value_counts().plot(kind='pie');

  • 注意以上三种图的坐标值
    • x轴是由该字段所有不同值的数组组成
    • y轴是由该字段每种不同值对应个数的数组组成

2.图形尺寸设置

#可以看到上面的线性图的x轴坐标都挤到一起了 这里将修改x、y轴尺寸
#figsize属性 (10,3) 指的x、y轴长度 
fo.Sport.value_counts().plot(kind='line',figsize=(10,3));

3.图形颜色设置

  • 链接:https://matplotlib.org/examples/color/named_colors.html
#设置color属性 
fo.Sport.value_counts().plot(kind='line',color='plum');

#设置color属性
fo.Sport.value_counts().plot(kind='bar',color='green');

4.多颜色自动匹配-colormaps

#如果要给饼状图指定颜色 使用下面这行代码会报错
fo.Sport.value_counts().plot(kind='pie',color='red');

#因为饼状图有多个颜色 不能指定一个属性color 要制定属性colormap
fo.Sport.value_counts().plot(kind='pie',colormap='Dark2');


5.seanborn简单使用

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

#读取数据
oo = pd.read_csv('C:\\Users\\霉偷煤南\\Desktop\\pandas_code_data\\code_data\\data\\olympics.csv',skiprows=4)

#countplot有三个数据的参数 x、y、hue,其中x、y有且只能有一个,hue可有可无,data:x、y、hue都是data变量的一个属性
#画出来的图 x轴是指定的属性的所有不同的值,y轴是每个不同的值对应的个数
sns.countplot(x='Medal',data=oo)

#显示
plt.show()

#指定hue就是再一个属性 然后统计两个属性所有的不同组合及其对应的个数
sns.countplot(x='Medal',data=oo,hue='Gender')

# order属性:给x轴坐标自定顺序 
sns.countplot(data=oo,x='Medal',hue='Gender',order=['Bronze','Silver','Gold']);

# palette属性:自定义颜色
sns.countplot(data=oo,x='Medal',hue='Gender',palette='bwr',order=['Bronze','Silver','Gold']);


二.数据可视化续

1.画出所有属性的频率直方图

import pandas as pd
import matplotlib.pyplot as plt

#读取第二个数据文件
housing = pd.read_csv('C:\\Users\\霉偷煤南\\Desktop\\pandas_code_data\\code_data\\data\\house\\housing.csv')

#.hist是画频率直方图 bins:每个直方图分的段、figsize:每个子图的大小
housing.hist(bins=50,figsize=(29,15))

plt.show()

  • 如果直接给DataFrom对象调用.plot 则不会像.hist画直方图一样有多个子图 而是会画到一个图里
    #不指定plot的kind 那默认是折线图
    housing.plot()
    

2.跟数据分组搭配

import pandas as pd
import matplotlib.pyplot as plt

oo = pd.read_csv('C:\\Users\\霉偷煤南\\Desktop\\pandas_code_data\\code_data\\data\\olympics.csv',skiprows=4)

#把每一年对应的大小算出来
#这里如果用”oo.Edition.value_counts().plot(kind='line')“ 在连城线之后会有问题 因为value_counts会进行排序 这样曲线会经常往x轴负方向走
oo.groupby('Edition').size().plot()

plt.show()


3.跟重塑数据搭配

import pandas as pd
import matplotlib.pyplot as plt

oo = pd.read_csv('C:\\Users\\霉偷煤南\\Desktop\\pandas_code_data\\code_data\\data\\olympics.csv',skiprows=4)

#筛选一部分数据出来
ug = oo[(oo.NOC == 'USA') & (oo.Medal == 'Gold')]

#数据重塑的基本操作 先组合再.size()再unstack()  
#因为可以自己指定x、y轴属性 与x轴属性如果有多个不同值就会产生多个线条
#参数:fill_value=0 指当有空值时其值为0
ug.groupby(['Edition','Gender']).size().unstack('Gender',fill_value=0).plot()

#使用这种数据重塑可以一个图画多个线 并且指定x轴、y轴的属性
plt.show()



4.heatmap数据总结图

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

oo = pd.read_csv('C:\\Users\\霉偷煤南\\Desktop\\pandas_code_data\\code_data\\data\\olympics.csv',skiprows=4)

#筛选部分数据
lo = oo[oo.Edition==2008]

#数据重塑的基本操作 
g = lo.groupby(['NOC','Medal']).size()
g = g.unstack('Medal',fill_value=0)
#排序
g = g.sort_values(['Gold','Silver','Bronze'],ascending=False)[['Gold','Silver','Bronze']]

sns.heatmap(g)
plt.show()


#将g转置一下 
g = g.transpose()
#设置尺寸
plt.figure(figsize=(16,5))

sns.heatmap(g)
plt.show()



5.定制colormap

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.colors import ListedColormap

oo = pd.read_csv('C:\\Users\\霉偷煤南\\Desktop\\pandas_code_data\\code_data\\data\\olympics.csv',skiprows=4)

#根据16进制rgb设置自己想要的颜色
gsb = ['#dbb40c','#c5c9c7','#a87900']

#下面注释的这条可以查看自己定义的颜色组合
#sns.palplot(sns.color_palette(gsb))

#把自己设置的颜色设置近colormap 以后就可以使用
my_gsb = ListedColormap(sns.color_palette(gsb))

#数据重塑基本操作
g = oo.groupby(['Athlete','Medal']).size().unstack('Medal',fill_value=0)
g = g.sort_values(['Gold','Silver','Bronze'],ascending=False)[['Gold','Silver','Bronze']]

#使用自己定义的colormap
g.head().plot(kind='bar',colormap=my_gsb)
plt.show()


  • 小结
    • 折线图:plt或DataFrom对象.plot(kind='line) 或者不写 默认就是line
    • 柱状图:plt或DataFrom对象.plot(kind=‘bar’)
    • 饼状图:plt或DataFrom对象.plot(kind='pie)
    • 直方图:plt或DataFrom对象.hist()
    • 柱状图:sns.countplot()
    • heatmap:sns.heatmap()

转载:https://blog.csdn.net/weixin_43934607/article/details/102188984
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场