pandas的一些


在具體談及騷操作之前先捋一遍基本的統計特征函數

方法名 函數功能 所屬庫
sum() 計算數據樣本的綜合(按照列計算) pandas
mean() 計算數據樣本的算術平均數 pandas
var() 計算樣本的方差 pandas
std() 計算樣本的標准差 pandas
sample() 計算樣本的Spearman(Person)相關系數矩陣 pandas
cov() 計算樣本的協方差矩陣 pandas
skew 樣本值的偏度;偏度系數 pandas
describe() 給出樣本的基本描述(比如均值、標准差等) pandas
kurt() 樣本值的峰度;峰度系數 pandas
median() 樣本值的中位數 pandas
quantile() 樣本4分位數  
import pandas as pd
df = pd.read_csv(r"C:\Users\lenovo\Desktop\HR.csv")
>>>

       satisfaction_level  last_evaluation  ...  department  salary
0                    0.38             0.53  ...       sales     low
1                    0.80             0.86  ...       sales  medium
2                    0.11             0.88  ...       sales  medium
3                    0.72             0.87  ...       sales     low
4                    0.37             0.52  ...       sales     low
5                    0.41             0.50  ...       sales     low
6                    0.10             0.77  ...       sales     low
7                    0.92             0.85  ...       sales     low
8                    0.89             1.00  ...       sales     low
9                    0.42             0.53  ...       sales     low
10                   0.45             0.54  ...       sales     low
11                   0.11             0.81  ...       sales     low
12                   0.84             0.92  ...       sales     low
13                   0.41             0.55  ...       sales     low
14                   0.36             0.56  ...       sales     low

首先是df.mean()

satisfaction_level         0.612839
last_evaluation           67.373732
number_project             3.802693
average_monthly_hours    201.041728
time_spend_company         3.498067
Work_accident              0.144581
left                       0.238235
promotion_last_5years      0.021264
dtype: float64

df["satisfaction_level"].mean()

0.6128393333333333

df.quantile(q=0.25)

satisfaction_level         0.44
last_evaluation            0.56
number_project             3.00
average_monthly_hours    156.00
time_spend_company         3.00
Work_accident              0.00
left                       0.00
promotion_last_5years      0.00
Name: 0.25, dtype: float64
df["satisfaction_level"].skew() # 偏態系數
Out[9]: -0.47643761717258093
df["satisfaction_level"].kurt() # 峰態系數
Out[10]: -0.6706959323886252
df.sample(n=10)  # 給df進行抽樣10個
Out[11]: 
       satisfaction_level  last_evaluation  ...   department  salary
12624                0.38             0.50  ...        sales     low
12343                0.41             0.56  ...    technical  medium
12214                0.40             0.53  ...           IT     low
3607                 0.64             0.66  ...        sales  medium
11808                0.69             0.90  ...  product_mng     low
6604                 0.19             0.85  ...    technical     low
6471                 0.60             0.82  ...           IT     low
6447                 0.52             0.51  ...    technical    high
535                  0.37             0.56  ...        sales  medium
10989                0.17             0.55  ...        RandD     low
df.sample(frac=0.01)  # 給df進行抽樣率為0.01
Out[12]: 
       satisfaction_level  last_evaluation  ...   department  salary
223                  0.87             0.90  ...           IT     low
9683                 0.56             0.83  ...           IT  medium
5586                 0.81             0.99  ...        sales  medium
12269                0.38             0.86  ...    technical  medium
208                  0.44             0.50  ...      support     low
1412                 0.46             0.46  ...    technical     low
11713                0.63             0.98  ...   management    high
10660                0.83             0.74  ...      support  medium
1757                 0.36             0.51  ...        sales     low
14994                0.40             0.57  ...      support     low
1238                 0.66             1.00  ...        sales  medium

基本方法就先演示這幾個

騷操作一:

shift方法:

首先通過df.shift?方法來了解一下

Examples
--------
 df = pd.DataFrame({'Col1': [10, 20, 15, 30, 45],
                    'Col2': [13, 23, 18, 33, 48],
                    'Col3': [17, 27, 22, 37, 52]})
 df.shift(periods=3)
   Col1  Col2  Col3
0   NaN   NaN   NaN
1   NaN   NaN   NaN
2   NaN   NaN   NaN
3  10.0  13.0  17.0
4  20.0  23.0  27.0
 df.shift(periods=1, axis='columns')
   Col1  Col2  Col3
0   NaN  10.0  13.0
1   NaN  20.0  23.0
2   NaN  15.0  18.0
3   NaN  30.0  33.0
4   NaN  45.0  48.0
 df.shift(periods=3, fill_value=0)
   Col1  Col2  Col3
0     0     0     0
1     0     0     0
2     0     0     0
3    10    13    17
4    20    23    27
File:      c:\users\lenovo\appdata\roaming\python\python36\site-packages\pandas\core\frame.py
Type:      method

可以知道periods參數是用來控制移動的距離;axis是用來控制列移動還是行移動,fill_value是用來控制因為移動數據產生的NAN用什么來進行填充

可以看到數據是集體向下移動的

加上fill_value參數就會變成0了

如果需要用到隔行相減的情況就派上用場了

除了shift還有累計計算(cum)和滾動計算(pd.rolling)

Pandas累積統計特征函數
方法名 函數功能 所屬庫
cumsum() 依次給出前1,2,3……n個數的和 pandas
cumprod() 依次給出前1,2,3……n個數的積 pandas
cummax() 依次給出前1,2,3……n個數的最大 pandas
cummin() 依次給出前1,2,3……n個數的最小 pandas
Pandas累積統計特征函數
方法名 函數功能 所屬庫
rolling_sum() 計算數據樣本的總和(按列計算) Pandas
rolling_mean() 數據樣本的算術平均數 Pandas
rolling_var() 計算數據樣本的方差 Pandas
rolling_std() 計算數據樣本的標准差 Pandas
rolling_corr() 計算數據樣本的Spearman(Pearson)相關系數矩陣 Pandas
rolling_cov() 計算數據樣本的協方差矩陣 Pandas
rolling_skew() 樣本值的偏度 Pandas
rolling_kurt() 樣本值得峰度 Pandas

其中,cum系列函數是作為DataFrame或者是Series對象的方法而出現的,因此命令格式為D.cumsum(),但是rolling系列是pandas的函數,並不是DataFrame或者Series對象的方法,因此他們的使用格式為pd.rolling_mean(D,k),意思為每K列計算一次平均值,滾動計算。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM