資料分析(五)

2021-09-01 04:41:48 字數 3004 閱讀 8717

週末,終於閒了下來。突然想起資料分析的知識還沒整理完。好吧,廢話就不多說了,我們繼續總結相關的知識點。

前面學了series和dataframe,今天我們先說說他們的運算:

【重要】

使用python操作符:以行為單位操作,對所有行都有效。(類似於numpy中二維陣列與一維陣列的運算,但可能出現nan)

使用pandas操作函式:

axis=0:以列為單位操作(引數必須是列),對所有列都有效。

axis=1:以行為單位操作(引數必須是行),對所有行都有效。

1.假設ddd1是期中考試成績,ddd2是期末考試成績,請自由建立ddd2,並將其與ddd1相加,求期中期末平均值。

2.假設張三期中考試數學被發現作弊,要記為0分,如何實現?

3.李四因為舉報張三作弊立功,期中考試所有科目加100分,如何實現?

4.後來老師發現有一道題出錯了,為了安撫學生情緒,給每位學生每個科目都加10分,如何實現?

ddd1=dataframe(data=np.random.randint(0,150,size=(3,3)),index=['張三','李四','王五'],columns=['語文','數學','英語'])

ddd1#檢視輸出結果

ddd2 = dataframe(data=np.random.randint(0,150,size=(3,3)),index=['張三','李四','王五'],columns=['語文','數學','英語'])

ddd2

(ddd1+ddd2)/2 #算平均分

ddd1.loc['張三','數學']=0 #張三期中數學為0分

ddd1

ddd1.loc['李四']+=100 #李四各科成績均加100分

ddd1

ddd1+=10 #安撫情緒,加十分

ddd1

閾值判斷

ddd1>100

dataframe和numpy都可以 判斷 然後返回 布林值的資料

一、有兩種丟失資料:

none: python自帶的資料型別 不能參與到任何計算中

np.nan: float型別 能參與計算,但結果總是nan

二、np.nan(nan)

陣列直接運算會得到nan,但可以使用np.nan*()函式來計算nan,此時視nan為0。

ndarr = np.array([1,2,3,np.nan])

np.sum(ndarr)

np.nansum(ndarr)

series和dataform可以直接處理nan

s1 = series([1,2,3,np.nan])

s1s1.sum()

df1 = dataframe([1,2,3,np.nan])

df1df1.sum()

三、pandas中的none與nan

s1 = series([1,2,3,np.nan,none])  # 

s1df1 = dataframe([1,2,3,np.nan,none]) # series和dataframe都會自動把none轉換成nan 然後 運算的時候會把nan當成0

df1

四、空值檢測與控制處理

空值檢測:

isnull()

notnull()

snull配合any使用,可以檢視每一行是否存在空值

可以控制axis改變方向,檢視某一列是否存在空值

df.isnull() # 是空值就是true否則就是false

# df.isnull().any()  # 檢視某一列是否有空值

# df.isnull().any(axis=1) # 檢視某一行(樣本)是否有空值

空值過濾

dropna()

可以選擇過濾的是行還是列(預設為行)

df.dropna()  # 預設 保留沒有空值的行
也可以選擇過濾的方式 how = 『all』

#how=『any』 how用來設定如何刪除

#預設是any 只要有空就刪除

df.dropna(how=『all』)

空值填充:

fillna()

可以指定value

#value=none

df.fillna(value=50)

也可以選擇從前面找值來填充還是從後面找值來填充

#method指的是 如何對空值進行填充

#'bfill』從後面找值來填充 ffill從前面找值來填充

#df.fillna(method=『bfill』)

#df.fillna(method=『ffill』) # 預設是縱向(從相鄰樣本的 同意特徵中找值)

還可以指定是在尋找值時候的軸線

#df.fillna(method='bfill',axis=0)  # 豎向

df.fillna(method='bfill',axis=1) # 橫向

fillna()方法總結:

#value=none, method=none, axis=none, inplace=false, limit=none

#value直接指定 用什麼值來填充

#method 指定填充方法

#axis 指定填充值的方向

#inplace 指的是是否對原df進行替換

#limit 限制填充的個數

df.fillna()

主要看 objs ignore_index axis 三個引數

不匹配級聯

不匹配指的是級聯的維度的索引不一致。例如縱向級聯時列索引不一致,橫向級聯時行索引不一致

主要看 join keys join_axes 三個引數

使用pd.merge()合併

merge與concat的區別在於,merge需要依據某一共同的行或列來進行資料的融合

注意每一列元素的順序不要求一致

資料分析(五)

對比分析,分組分析,矩陣關聯分析,邏輯樹分析,漏斗分析法 使用場景是用來判斷某個資料是好還是壞,以及判斷某幾個資料時間的差異性。對比分析案例 時間,空間 不同時間分組 日 周 月 年 不同產品型別分組 產品屬性,產品區域 不同使用者型別分組 人口屬性 性別 年齡 客戶價值,消費頻次 不同渠道分組 線...

資料分析處理(五)

id點菜次數最多 import numpy as np import pandas as pd 匯入pandas用於 操作 import xlrd 匯入xlrd用於獲取乙個 裡多個sheet from matplotlib import pyplot as plt 匯入pyplot用於繪圖 from...

資料分析學習(五)

學習主題 作者關聯 資料建模任務 對 作者關係進行建模,統計最常出現的作者關係 學習內容 構建作者關係圖,挖掘作者關係 學習成果 作者知識圖譜 圖關係挖掘 將作者列表進行處理,並完成統計。具體步驟如下 將 第一作者與其他作者 非第一作者 構建圖 使用圖演算法統計圖中作者與其他作者的聯絡 圖是複雜網路...