要准备的数据文件
- 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
查看评论