1、專案說明
讀取資料,進行資料清洗,按照地域和學校統計知友的分布情況,做視覺化圖表
2、專案要求
2.1 資料清洗 - 去除空值
2.2 知友全國地域分布情況,分析出top20,要求:
2.3 知友全國地域分布情況,分析出top20,要求:
3、實現思路
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
% matplotlib inline
zhihu = pd.read_csv('知乎資料_201701.csv', engine = 'python')
people = pd.read_csv('六普常住人口數.csv', converters=, engine = 'python')
1、資料清洗 - 去除空值可以建立函式,fillna方法填充缺失資料,注意inplace引數
# 資料清洗函式
def data_cleaning(df):
cols = list(df.columns)
for col in cols:
if df[col].dtypes == 'object':
df[col].fillna("缺失資料", inplace=true)
else:
df[col].fillna(0, inplace=true)
return df
zhihu_c = data_cleaning(zhihu)
data_city = zhihu_c.groupby('居住地')['_id'].count()
data_city = data_city.reset_index().rename(columns=)
people['地區'] = people['地區'].str[:-1]
# 使用join連線,因為有很多city無法識別,且有些city無統計資料, 無效資料處理
data_city = data_city.merge(people.iloc[:, [1,3]], how='inner', on = '地區')
data_city['知友密度'] = data_city['知友數量']/data_city["常住人口"]
def data_standard(df, col):
xmin = np.min(df[col])
xmax = np.max(df[col])
if xmax != xmin:
df[col+'_標準化']= ((df[col]-xmin)/(xmax-xmin))*100
else:
df[col+'_標準化']=0
return df
data_city = data_standard(data_city, '知友數量')
data_city = data_standard(data_city, '知友密度')
data_city_cnt_top20 = data_city.sort_values(by=['知友數量_標準化'], axis=0, ascending=0).iloc[0:20,[0,4]]
data_city_midu_top20 = data_city.sort_values(by=['知友密度_標準化'], axis=0, ascending=0).iloc[0:20,[0,5]]
# 視覺化
plt.rcparams['font.sans-serif']=['simhei']
plt.rcparams['axes.unicode_minus'] = false # 設定以顯示中文
def data_plt(df, col, title, color='yellowgreen'):
fig1 = plt.figure(num=1,figsize=(12,4))
y1 = df[col[0]]
plt.bar(range(20),
y1,width = 0.8,
facecolor = color,
edgecolor = 'k',
tick_label = df[col[1]])
plt.title(title)
plt.grid(true, linestyle = "-", color = "gray", linewidth = "0.5", axis = 'y')
for i,j in zip(np.arange(20),y1):
plt.text(i-0.25,2,'%.1f' % j, color = 'k', fontsize = 9)
data_plt(data_city_cnt_top20, ['知友數量_標準化','地區'], '知友數量 top20' )
data_plt(data_city_midu_top20, ['知友密度_標準化','地區'], '知友密度 top20', 'lightblue')
data_school = zhihu_c.groupby('教育經歷')['關注者','關注'].sum()
data_school = data_school.reset_index().rename(columns=)
data_school = data_school[~data_school['教育經歷'].isin(['缺失資料','本科','醫學','大學本科','大學'])]
data_school_fans = data_school.sort_values(by='關注人數', ascending=0).iloc[:20, :]
fans = data_school_fans.iloc[:,1]
follow = data_school_fans.iloc[:,2]
school = data_school_fans.iloc[:,0]
fans_mean = fans.mean()
follow_mean = follow.mean()
fig2 = plt.figure(num=1,figsize=(10,6))
plt.scatter(follow, fans,
marker='o',
s= fans/1000,
cmap = 'blues',
c = fans,
alpha = 0.8,
label = '學校')
# 視覺化
# 新增顯示內容
plt.axvline(follow_mean,hold=none,label="平均關注人數:%i 人" % follow_mean, color='r',linestyle="--",alpha=0.8) # 新增x軸參考線
plt.axhline(fans_mean,hold=none,label="平均粉絲數:%i 人" % fans_mean, color='g',linestyle="--",alpha=0.8) # 新增y軸參考線
plt.legend(loc = 'upper left')
plt.grid()
# 新增注釋
資料倉儲資料清洗策略的研究和實現
資料探勘 data mining 常常被稱為資料庫中的知識發現 knowledge discovery in database 通常是只從資料庫或資料倉儲中提取隱含的 未知的 潛在的和有用的資訊的非平凡過程 5 一般認為,資料探勘主要包括廣義的關聯規則 分類和聚類 時序模式等主要研究領域。目前研究的...
資料清洗和轉換
實際生產環境中機器學習比較耗時的一部分 大部分的機器學習模型所處理的都是特徵,特徵通常是輸入變數所對應的可用於模型的 數值表示 大部分情況下 收集得到的資料需要經過預處理後才能夠為演算法所使用,預處理的操作 主要包括以下幾個部分 對資料進行初步的預處理,需要將其轉換為一種適合機器學習模型的表示形式,...
推廣專案難點之資料清洗
1 背景 資料清洗就是將大量資料組裝後呼叫第三方介面,根據返回結果分類儲存成功資料和錯誤資料。平均每天對接的資料總共有3w左右需要清洗,有時候重複清洗所有資料達到100w以上。2 設計方案 2.1 版本v1.0 2.1.1 待清洗資料儲存在表cookie clean t 已經按照需求進行過第一步去重...