成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

對于非結構化數據,EDA探索性數據分析該怎么做?

大數據 數據分析
本文的討論到此結束。當然,在EDA中還有很多技術比本文在這里介紹的要多得多,這取決于用戶在問題陳述中要使用的數據集。

探索性數據分析是機器學習開發生命周期的關鍵階段之一,在任何現實生活中的數據分析項目中,它幾乎占用了整個項目50-60%的時間,因為我們必須用來尋找洞察力的數據是原始數據,在應用機器學習算法之前必須進行處理,以獲得最佳性能。這個步驟必須包括以下內容:

  1. 涉及更好地分析和總結數據集,以了解其潛在的模式、關系和趨勢。
  2. 識別基本的數據特征,檢測異常或異常值,并確定最合適的建模技術來預測未來的結果。

讓我們通過一個故事來理解EDA在數據分析中的意義。

從一個故事理解EDA的重要性

一家小公司剛剛在市場上開展業務。這家公司有一群對自己的角色充滿熱情的專業人士,他們以一種方式工作使整個公司都能獲利。隨著公司開始在員工或用戶方面增加對其推廣產品的了解,管理團隊意識到,他們需要幫助了解用戶或客戶對公司提供的產品或服務的需求和行為。

為了克服這個問題,他們開始聘請一些技術專業人員。最終,他們在數據分析師的職位下找到了一個技術人員,以便他們能夠更好地了解客戶數據。該分析師將能夠從中找到重要的信息或見解。他們聘請的分析師在他們主要從事探索性數據分析的同一類型技術或項目中具有良好的實踐經驗。

因此,對于這個問題,他們開始通過網絡抓取從多個API收集數據,其中包括公司網站、社交媒體、論壇等。收集完數據后,他們開始清理和處理數據,以便他們能夠從這些數據中找到一些見解。他們使用統計技術如假設測試和商業智能工具來探索數據,并使用模式識別技術發現隱藏的模式。

在建立管道后,他們觀察到公司的客戶對購買環保和可持續的產品最感興趣。公司管理層基于這些見解推出了環保和可持續的產品。于是,基于這些更新,新產品得到了客戶的喜歡,最終,公司的收入開始成倍增長。管理層已經開始意識到探索性數據分析的重要性,并聘請了更多的數據分析師。

因此,在本文中,受上述故事的啟發,我們將了解管道的探索性數據分析階段里面的不同技術,并在這個過程中使用流行的工具。本文為初學者和有經驗的數據分析師提供了EDA的全面概述及其在數據科學中的重要性。

實施的不同技術

為了理解EDA內部使用的每一種技術,本文將研究一個數據集,并使用用于數據科學的Python庫(例如NumPy、Pandas、Matplotlib等)來實現分析。

本文將在分析中使用的數據集是Titanic數據集,它可以從這里(https://www.kaggle.com/c/titanic/data)下載。本文將使用train.csv進行模型訓練。

1.導入必要的庫和依賴項

在實施之前,首先導入必要的庫,本文將利用這些庫來實現不同的EDA技術,包括:

  1. 用于矩陣操作的NumPy
  2. 用于數據分析的Pandas
  3. 用于數據可視化的Matplotlib和Seaborn
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sb

2.加載和分析數據集

在導入所有需要的庫之后,我們將使用Pandas dataframe加載Titanic數據集。然后我們可以開始執行不同的數據預處理技術,為進一步建模和歸納準備數據。

passenger_data = pd.read_csv('titanic.csv')
passenger_data.head(5)

輸出:

圖片

圖 1

3.獲取統計摘要

下面的分析為我們提供了數據中所有數值列的統計數據。我們可以從這個函數中得到的統計數據是:

  1. 計數
  2. 平均數和中位數
  3. 標準偏差
  4. 最小值和最大值
  5. 不同的四分位數值
passenger_data.describe()

輸出:

圖片

圖 2

通過解釋上述輸出,我們可以看到有891名乘客,平均存活率為38%。年齡欄的最小值和最大值在0.42至80之間,平均年齡約為30歲。另外,至少有50%的乘客沒有兄弟姐妹/配偶,至少有75%的乘客沒有父母/子女,票價一欄的數值也有很大變化。

讓我們試著通過從頭開始編寫代碼來計算生存率。

4.計算乘客的總體存活率

為了計算總體存活率,首先選擇Survived列,檢查數值為1的行,然后計算所有這些行。最后,為了找到百分比,我們將用它除以總行數并輸出結果。

survived_data = passenger_data[passenger_data['Survived'] == 1]
survived = survived_data.count().values[1]
survival_percent = (survived/891) * 100
print('The percentage of survived people in training data are {}'.format(survival_percent))

輸出:

The percentage of survived people in training data are 38.38383838383838

5.按gender和Pclass列計算存活率

現在,我們必須用聚合運算找到不同列的存活率,我們將使用gender和 Pclass列,然后應用均值函數來找到它,然后輸出結果。

survival_rate = passenger_data[['Pclass', 'Sex','Survived']].groupby(['Pclass', 'Sex'], as_index = False).mean().sort_values('Survived', ascending = False)
print(survival_rate)

輸出:

Pclass     Sex  Survived
0       1  female  0.968085
2       2  female  0.921053
4       3  female  0.500000
1       1    male  0.368852
3       2    male  0.157407
5       3    male  0.135447

6.將Passenger Id、Survived、Pclass的數據類型改為String。

由于某些列具有不同的數據類型,我們將所有這些列轉換為一個固定數據類型。即String(字符串)。

Cols = [ 'PassengerId', 'Survived', 'Pclass' ]
for index in Cols:
     passenger_data[index] = passenger_data[index].astype(str)
passenger_data.dtypes

7.數據集中重復的行

在進行數據建模時,如果存在重復的行,我們的性能可能會下降。因此,始終建議刪除重復的行。

passenger_data.loc[passenger_data.duplicated(), :]

8.創建直方圖以檢查數據分布情況

為了根據該列的可能值找到幸存列的分布,以便我們可以檢查類偏差,如果有任何問題,我們可以應用諸如過量取樣、欠量取樣、SMOTE等技術來克服該問題。

sb.set_style("white")
g = sb.FacetGrid(data = train[train['Age'].notna()], col = 'Survived')
g.map(plt.hist, "Age");

輸出:

圖片

圖 3

現在,如果我們比較上述兩個分布,那么建議使用相對頻率,而不是使用累積密度函數等的絕對頻率。由于我們以年齡一欄為例,具有絕對頻率的直方圖表明,在20-30歲的年齡組中受害者比幸存者多得多。

9.按生存值繪制年齡中缺失值百分比圖

在這里,我們創建了餅狀圖來尋找按生存值計算的缺失值的百分比,然后查看分區。

dt0 = train['Age'][train['Survived']=='0']
dt1 = train['Age'][train['Survived']=='1']
plt.figure(figsize = [15, 5])

plt.subplot(1, 2, 1)
age_na_pie(dt0)
plt.title('Survived: No');

plt.subplot(1, 2, 2)
age_na_pie(dt1)
plt.title('Survived: Yes');

輸出:

圖片

圖 4

餅狀圖顯示,年齡缺失的乘客更有可能成為受害者。

10.尋找每一列中的缺失值數量

passenger_data.isnull().sum()

從輸出結果中,可以觀察到Cabin列具有最大的缺失值,所以我們將從分析中刪除該列。

11.每列空值的百分比

passenger_data.isna().sum()/passenger_data.shape[0]

在Age一欄中,大約有20%的數據缺失,Cabin一欄中大約有77%的數據缺失,Embarked一欄中有0.2%的數據缺失。我們的目的是在建模之前處理缺失的數據。

12.從數據集中刪除Cabin一列

刪除Cabin這一列,因為它有很多缺失的值。

drop_column = passenger_data.drop(labels = ['Cabin'], axis = 1)
print(drop_column)

為了處理Age列,首先,我們將檢查Age列的數據類型并將其轉換為整數數據類型,然后用Age列的中位數來填補Age列中所有的缺失值。

datatype = passenger_data.info('Age')
fill_values = passenger_data['Age'].fillna(int(passenger_data['Age'].median()),inplace=True)
print(fill_values)

在這之后,數據集在缺失值、離群值等方面看起來不錯。現在,如果我們應用機器學習算法來查找數據集中的模式,然后在測試數據上進行測試,與沒有預處理和探索性數據分析或數據處理的數據相比,模型的性能會更強。

來自EDA的收獲

以下是幸存者與受害者相比的特征:

  • 幸存者很可能有父母或子女陪伴;與其他人相比,他們的機票更貴。
  • 與所有年齡段的受害者相比,兒童更有可能存活下來。
  • 年齡缺失的乘客成為幸存者的可能性較小。
  • pclass(SES)較高的乘客更有可能存活下來。
  • 女性比男性更有可能存活下來。
  • Cherbourg的乘客比Queenstown和Southampto的乘客有更高的生存機會。

總結

本文的討論到此結束。當然,在EDA中還有很多技術比本文在這里介紹的要多得多,這取決于用戶在問題陳述中要使用的數據集。總而言之,EDA在使用數據來訓練模型之前,了解數據是有益的。這種技術在任何數據科學項目中都起著至關重要的作用,使簡單模型在項目中使用時能有更好的表現。因此,每個有抱負的數據科學家、數據分析師、機器學習工程師和分析經理都需要正確了解這些技術。

責任編輯:武曉燕 來源: Python學研大本營
相關推薦

2020-05-13 11:32:28

數據分析數值分析

2023-11-30 07:23:53

數據分析EDA

2023-12-22 09:14:48

EDA數據分析探索性數據分析

2020-10-28 18:28:12

Pandas數據分析GUI

2022-11-11 11:35:14

2017-04-25 18:35:47

硅谷數據科學家數據分析

2024-07-30 12:10:22

2024-06-12 11:57:51

2023-07-29 22:27:44

2018-04-03 14:00:03

結構化數據非結構化數據數據庫

2024-05-21 13:33:49

2021-12-12 08:37:18

結構化數據非結構化數據數據

2016-10-11 15:32:26

探索性大數據

2012-09-04 09:20:26

測試軟件測試探索測試

2024-05-27 00:32:45

2017-05-20 10:36:37

非結構化數據分析技術

2015-09-21 09:33:47

大數據數據分析

2017-11-16 05:22:34

非結構化數據分析數據

2020-08-18 13:30:01

Python命令數據分析
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品自产av一区二区三区 | 91免费视频 | 欧美一区二区三区在线观看 | 综合久久99| 欧美猛交| 亚洲网站在线 | 国产精品久久久久久52avav | eeuss国产一区二区三区四区 | 精品欧美一区二区三区久久久 | 亚洲精品在线91 | 亚洲一卡二卡 | 国产丝袜一区二区三区免费视频 | 草久久| 亚洲成av人片在线观看 | 99免费在线观看视频 | 黄色在线免费观看 | 国产高清免费视频 | 国产精品视频久久 | 日韩一及片| 久久一区精品 | 黄色av免费 | 91av视频在线观看 | 国产精品欧美一区喷水 | 91偷拍精品一区二区三区 | 成人福利在线观看 | 精品亚洲一区二区三区 | 成人福利网| 99re在线视频 | 日日夜夜狠狠操 | 亚洲毛片在线观看 | 欧美日韩视频在线第一区 | 国产激情综合五月久久 | 色综合99 | 特级毛片www| 九九精品在线 | 国产精品久久久久久av公交车 | 国产激情一区二区三区 | 亚洲精品在线观看视频 | 中文二区 | 电影91久久久 | 日日摸夜夜爽人人添av |