公共部分
```
# 引入數據分析工具 Pandas
import pandas as pd
# 引入數據可視化工具 Matplotlib
import matplotlib.pyplot as plt
# 引入數據可視化工具 Seaborn (基于matplotlib)
import seaborn as sns
# 解決輸出時的列名對齊問題
pd.set_option('display.unicode.east_asian_width', True)
# 解決輸出中文亂碼問題
plt.rcParams['font.sans-serif'] = ['SimHei'] ?# 設置顯示中文字體
plt.rcParams['axes.unicode_minus'] = False ?# 設置正常顯示符號
?
# 讀取CSV文件
data = pd.read_csv('E:\\practiceCode\\pythonCode\\source\\DataAnalyst.csv',encoding='gbk')
# 顯示前5行數據
# print(df.head())
# 清洗薪水數據
data['薪水'] = data['薪水'].str.replace('k','000') # 將k替換為000
data['薪水'] = data['薪水'].str.replace('以上','') # 去除以上
data['薪水'] = data['薪水'].str.split('-') # 根據'-'分割字符串 [1000,2000]
# 定義 計算平均薪水函數
def calculate_salary(x):
? ? try:
? ? ? ? if len(x) > 1:
? ? ? ? ?return (int(x[0]) + int(x[1])) / 2
? ? ? ? else:
? ? ? ? ? ? return int(x[0])
? ? except:
? ? ? ? return None
# 應用函數到薪水列 ? 計算平均薪水
data['薪水'] = data['薪水'].apply(calculate_salary)
```
柱狀圖
```
# 1. 數據分析師平均薪水
avg_salary = data[data['職位名稱'] == '數據分析師']['薪水'].mean()
print('數據分析師平均薪水:',avg_salary)
# 2. 數據分析師不同城市薪資狀態 (條形圖)
plt.figure(figsize=(10,6)) # 設置畫布大小
plt.title("數據分析師薪資分布(按城市)") # 設置標題
sns.barplot(x='城市',y='薪水',data=data[data['職位名稱'] == '數據分析師'])
plt.show() # 展示
# 3. 數據分析師不同學歷的薪資狀態
plt.figure(figsize=(10,6)) # 設置畫布大小
plt.title("數據分析師薪資分布(按學歷)") # 設置標題
sns.barplot(x='教育要求',y='薪水',data=data[data['職位名稱'] == '數據分析師'])
plt.show() # 展示
```
條形圖
```
# 計算不同公司數據分析師的數量 并生成柱狀圖
company_count = data[data['職位名稱'] == '數據分析師']['公司簡稱'].value_counts()
# 取前10個元素
company_count = company_count[:10]
# 繪制柱狀圖
plt.figure(figsize=(10,6))
sns.barplot(x=company_count.index, y=company_count.values)
plt.title('不同公司數據分析師數量(前10)')
plt.xlabel('公司')
plt.ylabel('數量') ?
plt.show()
```
```
# 不同學歷的數據分析師 數量
degree_count = data[data['職位名稱'] == '數據分析師']['教育要求'].value_counts()
#生成柱狀圖
plt.figure(figsize=(10,6))
sns.barplot(x=degree_count.index, y=degree_count.values)
plt.title('不同學歷的數據分析師數量')
plt.xlabel('學歷要求')
plt.ylabel('數量')
plt.show()
```