數據分析案例-拉勾網招聘信息

一、導入模塊配置中文

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

二、從csv中讀取爬取得數據

採集代碼:https://github.com/song-zhixue/lagoupython

data = pd.read_csv("./lagou_data.csv",sep = ',',encoding = 'gbk')
data.head()

三、進行數據清洗

這裏我只作了簡單得清洗就是去掉空值git

- 去重
- 去空
   - 1刪除
   - 2替換
   - 3填充
- 去異常
   - 1非法數據  好比原本應該是數字列的中間夾雜着一些漢字或者是符號
   - 2異常數據  異乎尋常的大數值或者是小數值
data.isnull()
data.isnull().any() # 按照列統計空值,查看哪一列有空值
城市        False
公司全稱      False
企業編碼      False
公司簡介      False
公司logo    False
公司規模      False
發佈時間      False
區域         True
學歷        False
融資狀況      False
類型        False
工做性質      False
經度         True
緯度         True
地鐵         True
福利        False
職位名稱      False
薪資        False
工做年限      False
崗位        False
dtype: bool
data = data.dropna()  # 默認會刪除包含缺失值的行
data

四、根據城市招聘狀況繪製餅圖TOP10

data["城市"].value_counts()

北京     258
上海     149
深圳     136
廣州      54
成都      48
杭州      31
武漢      22
南京      12
重慶       7
蘇州       5
天津       4
石家莊      3
長沙       3
廈門       3
西安       2
鄭州       2
青島       2
大連       2
佛山       2
長春       1
貴陽       1
Name: 城市, dtype: int64
ret = data["城市"].value_counts().head(10).plot(kind='pie',autopct='%1.2f%%',figsize=(10,8))  # 取前10個結果進行繪圖
ret
plt.show

ret = data["城市"].value_counts().plot(kind='pie',autopct='%1.2f%%',figsize=(10,8),explode = np.linspace(0,1.5,21)) # 每隔1.5個長度繪製一次,一共21條數據
ret
plt.show

五、根據學歷繪製柱狀圖

data["學歷"].value_counts()

本科    613
大專     73
不限     50
碩士     11
Name: 學歷, dtype: int64

data["學歷"].value_counts().plot(kind='bar')
plt.xticks(rotation=0)

六、根據工做經驗繪製條形圖

data["工做年限"].value_counts()

3-5年     317
1-3年     193
5-10年     90
不限        79
應屆畢業生     62
1年如下       5
10年以上      1
Name: 工做年限, dtype: int64

data["工做年限"].value_counts().plot(kind='barh',color="orange")

 七、根據公司規模繪製餅圖和條形圖

data["公司規模"].value_counts()

150-500人     190
50-150人      181
15-50人       130
2000人以上      112
500-2000人    100
少於15人         34
Name: 公司規模, dtype: int64

data["公司規模"].value_counts().plot(kind='pie',autopct='%1.2f%%')

data["公司規模"].value_counts().plot(kind='barh',color="red")

 八、根據融資狀況繪製條形圖

data["融資狀況"].value_counts()

不須要融資    187
A輪       118
B輪       114
上市公司      96
未融資       88
天使輪       55
C輪        54
D輪及以上     35
Name: 融資狀況, dtype: int64

data["融資狀況"].value_counts().plot(kind='bar')
plt.xticks(rotation=45)

九、根據福利待遇繪製詞雲

# 利用結巴進行分詞
import jieba    
# 繪製詞雲
import wordcloud
# 自定義詞雲背景
from PIL import Image

data["福利"]
all_str = ''
for i in data["福利"]:
    all_str += i
# 利用jieba進行分詞
lis = jieba.lcut(all_str)

txt = " ".join(lis)
# mask = np.array(Image.open("./詞雲.jpg"))  # 自定義背景圖
w = wordcloud.WordCloud(
    font_path="msyh.ttc", 
    width=400, 
    height=400, 
    background_color="white",
#     colormap="Reds",
#     mask=mask,
#     contour_width=1,
#     contour_color="red"
)
w.generate(txt)
w.recolor()  # 隨機詞雲中的字體顏色
# w.to_file("福利.png") # 將詞雲保存在本地
w.to_image()   # 查看生成的詞雲

十、地圖可視化

利用地圖無憂進行地圖可視化:https://www.dituwuyou.com/github

data[["經度","緯度"]]   # 取經度和緯度這兩列數據

data[["經度","緯度"]].to_csv("./地圖經緯度.csv",encoding="gbk")   # 導出csv用地圖無憂繪製地圖

導出到csv樣式正則表達式

- https://www.dituwuyou.com/orgs/321267/maps
- 帳號:xxxxxx
- 密碼:xxxxxx

十一、薪資統計

咱們得到的數據都是以字符串形式存儲的,並且像工資(20k—30k)都是以區間的形式表現出來的,應該求其平均值(工資25k)app

原數據:字體

data["薪資"].value_counts()

15k-30k    71
15k-25k    68
10k-20k    58
20k-40k    49
20k-30k    32
10k-15k    30
25k-50k    24
8k-15k     22
20k-35k    20
10k-18k    16
12k-20k    16
8k-12k     15
15k-20k    13
12k-18k    13
25k-40k    12
6k-12k     11
25k-35k     9
12k-24k     9
30k-50k     9

清洗後的數據編碼

# 統計每一個公司給出的平均工資
pattern = '\d+'  # 正則表達式-匹配連續數字
data['平均工資']= data["薪資"].str.findall(pattern)
avg_salary = []
for k in data['平均工資']:
    salary_list = [int(n) for n in k]
    salary = sum(salary_list)/2
    avg_salary.append(salary)
data['平均工資'] = avg_salary # 新建立一列平均工資
data['平均工資']

0      11.5
2      13.0
3      15.0
4      22.5
5      30.0
6      20.0
8      15.0
9      75.0
10     15.0
11     17.0
12     12.5
13     37.5
14     11.5
15     12.0
16     12.5
17     22.5
19     25.0

根據平均薪資繪製頻數直方圖spa

# 平均工資直方圖
plt.figure(figsize=(15,5),dpi=80)
plt.hist(data['平均工資'], alpha=0.8, color='steelblue')
plt.xlabel('工資/千元')
plt.ylabel('頻數')
plt.title("python工程師平均工資直方圖")
plt.show()

 

能夠看出python的薪資範圍在10k-15k比較多3d

相關文章
相關標籤/搜索