專案03 資料清洗和結論研究

2021-09-24 10:08:43 字數 3960 閱讀 9939

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 已經按照需求進行過第一步去重...