1. 程式人生 > >pandas學習(常用數學統計方法總結、讀取或保存數據、缺省值和異常值處理)

pandas學習(常用數學統計方法總結、讀取或保存數據、缺省值和異常值處理)

導入 numpy shape 缺省 數量 導入數據 個數 就是 msu

pandas學習(常用數學統計方法總結、讀取或保存數據、缺省值和異常值處理)

目錄

常用數學統計方法總結
讀取或保存數據 缺省值和異常值處理

  

常用數學統計方法總結

count 計算非NA值的數量
describe 針對Series或DataFrame列計算統計
min/max/sum 計算最小值 最大值 總和
argmin argmax 計算能夠獲取到最小值和最大值的索引位置(整數)
idxmin idxmax 計算能夠獲取到最小值和最大值的索引值
quantile 計算樣本的分位數(0到1)
mean 值的平均數
median 值的中位數
mad 根據平均值計算平均絕對距離差
var 樣本數值的方差
std 樣本值的標準差
cumsum 樣本值的累計和
cummin cummax 樣本的累計最小值 最大值
cumprod 樣本值的累計積
pct_change 計算百分數變化

讀取或保存數據

讀取數據

pandas可以從外部獲取數據,構建數據對象,例如xlsx後綴的ececl文件,csv文件,txt文本等

下面以txt文件舉例:

先創建txt文本

技術分享圖片

讀取txt文本數據

#讀取txt文件
import pandas as pd

# df = pd.read_csv(‘data1.txt‘,sep=‘:‘)   #默認sep=‘,‘以什麽分割數據,默認逗號
# print("data01.csv文件的原始數據==========================")
# print(df)

df = pd.read_csv(‘data1.txt‘,sep=‘:‘,header=None) #默認sep=‘,‘,header:去除表頭,添加默認下標
print("data01.csv文件的原始數據==========================")
print(df)
#讀取excel文件
# df=pd.read_excel(‘data2.xlsx‘)
# print(df)

  

     0   1   2
0  張伊曼  27  90
1  張巧玲  27  90
2  張詩詩  27  90
3  張思思  27  90

  

保存數據

df.to_csv(‘data1.csv‘) #保存為csv文件
df.to_excel(‘data2.xlsx‘) #保存為xlsx

  

缺省值和異常值處理

缺省值

什麽是缺省值

null/None/NaN null經常出現在數據庫中 None是python中的缺失值,類型是NoneType NaN也是python中的缺失值,意思是不是一個數字,類型是float 在pandas和Numpy中會將None替換為NaN,而導入數據庫中的時候則需要把NaN替換成None

  

缺失值處理方法
pandas中缺省值NaN的4種處理方法:1 isnull 2 notnull 3 dropna 4 fillna
     方法             說明
dropna         根據標簽中的缺失值進行過濾,刪除缺失值
fillna         對缺失值進行填充
isnull         返回一個布爾值對象 ,判斷 哪些值是缺失值
notnull        isnull的否定式

  

判斷缺省值

import numpy as np
import pandas as pd
df = pd.DataFrame(np.arange(12).reshape(3,4),index=[‘a‘,‘b‘,‘c‘],columns=[‘A‘, ‘B‘, ‘C‘, ‘D‘])
#
print(df)

#判斷全部值的缺省值
d1=df.isnull()
print(d1)

#在某行中判斷缺省值
d2=df[0:1].isnull()
print(d2)

#在某列中# ‘A‘列判斷缺省值
d3=df[‘A‘].isnull()
print(d3)

 

   A  B   C   D
a  0  1   2   3
b  4  5   6   7
c  8  9  10  11
A B C D a False False False False b False False False False c False False False False
A B C D a False False False False
a False b False c False Name: A, dtype: bool

  

刪除缺省值

常用參數解釋:
how:‘all‘,刪除全為空值的行或列
inplace=True:覆蓋之前的數據
axis=0:選擇行或列

import numpy as np
import pandas as pd
dict0 = {
    ‘語文‘: [90, 80, 60],
    ‘數學‘: [99, 70, 89],
    ‘外語‘: [98, 10, 75],
    ‘物理‘: 90
}
df0 = pd.DataFrame(dict0)
#
df0[‘數學‘][1] = np.nan
#
print("df0原數據===============================")
print(df0)

print("df0.dropna()===============================")
print(df0.dropna())       #默認刪除有缺省值所在的行

print("df0.dropna(axis=1)===============================")
print(df0.dropna(axis=1)) #默認刪除有缺省值所在的列

print("df0.dropna(how=‘all‘,axis=1)===============================")
df0.ix[1] = np.nan
print(df0.dropna(how=‘all‘)) #當所有元素是缺省值的時候 才刪除

print("df0.dropna(how=‘any‘,axis=1)===============================")
df0[‘外語‘][0] = np.nan
print(df0.dropna(how=‘any‘)) #當所有元素有一個是缺省值的時候 才刪除

  

   語文    數學  外語  物理
0  90  99.0  98  90
1  80   NaN  10  90
2  60  89.0  75  90
df0.dropna()===============================
   語文    數學  外語  物理
0  90  99.0  98  90
2  60  89.0  75  90
df0.dropna(axis=1)===============================
   語文  外語  物理
0  90  98  90
1  80  10  90
2  60  75  90
df0.dropna(how=‘all‘,axis=1)===============================
     語文    數學    外語    物理
0  90.0  99.0  98.0  90.0
2  60.0  89.0  75.0  90.0

填充缺失值

註意:在這裏inplace會修改原始數據,並自動保存

import numpy as np
import pandas as pd
dict0 = {
    ‘語文‘: [90, 80, 60],
    ‘數學‘: [99, 70, 89],
    ‘外語‘: [98, 10, 75],
    ‘物理‘:None
}
df0 = pd.DataFrame(dict0)
print(‘df0的原始數據=================================‘)
print(df0)

print(‘將所有的缺省的數據填充為1=================================‘)
print(df0.fillna(1))#參數為填入值,可以為單個值,也可以為列表


print(‘將找到的缺省數據填充為平均值=================================‘)
print(df0.fillna(df0[‘語文‘].mean()))#結合numpy的數學運算函數,求平均值
print(df0[‘物理‘].fillna(df0[‘語文‘].mean()))#結合numpy的數學運算函數,求平均值,當然pandas自己也有自己的方法

  

df0的原始數據=================================
   語文  數學  外語    物理
0  90  99  98  None
1  80  70  10  None
2  60  89  75  None
將所有的缺省的數據填充為1=================================
   語文  數學  外語  物理
0  90  99  98   1
1  80  70  10   1
2  60  89  75   1
將找到的缺省數據填充為平均值=================================
   語文  數學  外語         物理
0  90  99  98  76.666667
1  80  70  10  76.666667
2  60  89  75  76.666667
0    76.666667

異常值處理

異常值就是與你想要獲取的值偏差太大或者不是想要的值

先用條件判斷篩選出來

再進行怎樣的處理看需要

數據去重

unique方法用於獲取Series或DataFrame某列中的唯一值數組(去重數據後的數組)
value_counts方法用於計算一個Series或DataFrame某列中各值的出現頻率
isin方法用於判斷矢量化集合的成員資格,是否在裏面,可用於選取Series中或DataFrame列中數據的子集

這裏演示的是Series類型數據

import numpy as np
import pandas as pd
s1 = pd.Series([‘a‘, ‘b‘, ‘c‘, ‘b‘, ‘a‘])
print("s1的原始數據==============================")
print(s1)
#
print("數據去重方法:s1.unique()==============================")
print(s1.unique())   #註意:s1.unique()返回的類型也是Series
#
print("單個值出現的個數:s1.value_counts()[‘a‘]==============================")
print(s1.value_counts()[‘a‘])
#
print("值是否存在的方法:s1.isin([‘a‘, ‘b‘])==============================")
print(s1.isin([‘a‘, ‘b‘]))

  

s1的原始數據==============================
0    a
1    b
2    c
3    b
4    a
dtype: object
數據去重方法:s1.unique()==============================
[‘a‘ ‘b‘ ‘c‘]
單個值出現的個數:s1.value_counts()[‘a‘]==============================
2
值是否存在的方法:s1.isin([‘a‘, ‘b‘])==============================
0     True
1     True
2    False
3     True
4     True
dtype: bool

  

pandas學習(常用數學統計方法總結、讀取或保存數據、缺省值和異常值處理)