练习的多种数据可视化方式

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/lipachong/article/details/101164142

记录一下,以便参考

#导入要用到的模块
import pandas as pd  #数据框操作
import matplotlib.pyplot as plt #绘图
import matplotlib as mpl #配置字体
import numpy as np
import seaborn as sns

mpl.rcParams['font.sans-serif'] = ['SimHei'] #这个是绘图格式,不写这个的话横坐标无法变成我们要的内容
#配置绘图风格
plt.rcParams['axes.labelsize'] = 8.
plt.rcParams['xtick.labelsize'] = 12.
plt.rcParams['ytick.labelsize'] = 12.
plt.rcParams['legend.fontsize'] =10.
plt.rcParams['figure.figsize'] = [8.,8.]

data3 = pd.read_csv('51job.csv')
#读取前面的内容
head=data3.head()
print(head)
#提取第一列的内容,第二列改成1就好,以此类推
row1=data3.iloc[:,0]
print(row1)
#查看第一行
cow1=data3.loc[0]
print(cow1)
#获取尾部信息,要多少尾部可以括号里自己写
wei=data3.tail()
print(wei)

xuewei=data3['xuewei']
print(xuewei)

#查看学历分类的状况以及计数
xuewei_count=data3['xuewei'].value_counts()
print(xuewei_count)
#因为学位列中有招多少多少人这种不规范数据,所以把带人字的数据修改
xuewei=data3['xuewei']
xueli=[]
for x in xuewei:
    if '人' in x:
        x='信息缺失'
    xueli.append(x)
data3['xuewei']=xueli

# 因为address列中出现上海-浦东新区,上海等,导致地区类别太多,所以把含有-的截取
address=data3['address']
quyu=[]
for x in address:
    if '-' in x:
        qu=x.split('-')[0]
        quyu.append(qu)
    else:
        xx=x.replace('\xa0\xa0','')
        quyu.append(xx)
data3['address']=quyu

# 因为xinzi列中出现万/月,万/年等
money=data3['xinzi']
avg_nums=[]
for x in money:
    if '-' in x:
        if '万/月' in x:
            num=x.split('万')[0]
            avg_num1=float(num.split('-')[0])*10000
            avg_num2=float(num.split('-')[1])*10000
            avg_num=(avg_num1+avg_num2)/2
            avg_nums.append(avg_num)
        if '万/年' in x:
            num=x.split('万')[0]
            avg_num1=float(num.split('-')[0])*10000/12
            avg_num2=float(num.split('-')[1])*10000/12
            avg_num=(avg_num1+avg_num2)/2
            avg_nums.append(avg_num)
        if '千/月'in x:
            num = x.split('千')[0]
            avg_num1 = float(num.split('-')[0]) * 1000
            avg_num2 = float(num.split('-')[1]) * 1000
            avg_num = (avg_num1 + avg_num2) / 2
            avg_nums.append(avg_num)
        if '元/天'in x:
            num = x.split('元')[0]
            avg_num1 = float(num.split('-')[0]) * 30
            avg_num2 = float(num.split('-')[1]) * 30
            avg_num = (avg_num1 + avg_num2) / 2
            avg_nums.append(avg_num)
    else:
        if '万/月' in x:
            avg_num=float(x.split('万')[0])*10000
            avg_nums.append(avg_num)
        if '万/年' in x:
            avg_num = float(x.split('万')[0])*10000/12
            avg_nums.append(avg_num)
        if '千/月'in x:
            avg_num = float(x.split('千')[0])*1000
            avg_nums.append(avg_num)
        if '元/天'in x:
            avg_num = float(x.split('元')[0])*30
            avg_nums.append(avg_num)

data3['xinzi']=avg_nums
print(len(data3['xinzi']))

# 查看分类的状况以及计数
xuewei_count=data3['xinzi'].value_counts()
print(xuewei_count)


# 绘制柱形图↓
# data3['xinzi'].value_counts().plot(kind='bar')
# plt.show()   #显示图片

# 绘制条形图↓
# data3['xuewei'].value_counts().plot(kind='barh')  #绘制倒置的条形图
# plt.show()   #显示图片

#绘制饼图
# data3['xingzhi'].value_counts().plot(kind='pie',autopct='%1.2f%%')
# plt.show()   #显示图片

# 绘制python薪资的频率直方图并保存
# plt.hist(data3['xinzi'],bins=8,facecolor='#ff6700',edgecolor='blue') # bins是默认的条形数目
# plt.xlabel('薪资(单位/千元)')
# plt.ylabel('频数/频率')
# plt.title('python薪资直方图')
# # plt.savefig('python薪资分布.jpg')
# plt.show()

# # 绘制饼状图并保存(相对基本的饼状图长得比较骚的饼状图)
# city = data3['xingzhi'].value_counts()
# print(type(city))
# # print(len(city))
# label = city.keys()
# print(label)
# city_list = []
# count = 0
# n = 1
# distance = []
# for i in city:
#     city_list.append(i)
#     print('列表长度', len(city_list))
#     count += 1
#     if count > 5:
#         n += 0.1
#         distance.append(n)
#     else:
#         distance.append(0)
# plt.pie(city_list, labels=label, labeldistance=1.2, autopct='%2.1f%%', pctdistance=0.6, shadow=True, explode=distance)
# plt.axis('equal')  # 使饼图为正圆形
# plt.legend(loc='upper left', bbox_to_anchor=(-0.1, 1))
# # plt.savefig('python地理位置分布图.jpg')
# plt.show()

# 从下面代码生成的的图片可以看出来,我们要观察在不同的jingyan和xuewei的情况下我们的xinzi分布情况,
# 这个时候,我们可以把jingyan指定为列,xuewei指定为行, 在map函数里面,第一个为指定的函数的绘图方式,
# 后面为该方式所使用的变量,该绘图方式既可以是plt里面的方法,也可以是seaborn里面的方法。
# grid = sns.FacetGrid(data3, row='jingyan', col='xuewei')
# grid.map(plt.hist, 'xinzi', bins=20)
# plt.show()

#countplot:  可以对变量进行计数
#经验和薪资的对应关系
# sns.countplot(x='jingyan', hue='xinzi',  data=data3)
# plt.show()

#在一个figure上面绘制多个axes
# 上面的绘图情况都是默认使用当前figure的当前axes,
# 并且一个figure上面有一个axes,假如你想要在一个figure上面绘制多个axes的话,
# 可以使用subplots和seaborn函数当中的ax参数
# fig, (ax1, ax2, ax3) = plt.subplots(1,3, figsize=(15,5))
# #我们在这里生成一个fig和三个axes,在下面绘图的时候只需要用ax参数来指定特定的axes就可以了
# sns.barplot(x='jingyan', y='xinzi', data=data3, ax=ax1)
# sns.countplot(x='xinzi', data=data3, ax=ax2)
# sns.distplot(data3['xinzi'], ax=ax3)
# plt.show()

猜你喜欢

转载自blog.csdn.net/lipachong/article/details/101164142