首頁 > 軟體

Pandas如何對Categorical型別欄位資料統計實戰案例

2022-08-23 14:00:46

一、Pandas如何對Categorical型別欄位資料統計

實戰場景:對Categorical型別欄位資料統計,Categorical型別是Pandas擁有的一種特殊資料型別,這樣的型別可以包含基於整數的類別展示和編碼的資料

1.1主要知識點

  • 檔案讀寫
  • 基礎語法
  • Pandas
  • read_csv

實戰:

1.2建立 python 檔案

import pandas as pd
#讀取csv檔案
df = pd.read_csv("Telco-Customer-Churn.csv")
 
# 填充 TotalCharges 的缺失值
median = df["TotalCharges"][df["TotalCharges"] != ' '].median()
df.loc[df["TotalCharges"] == ' ', 'TotalCharges'] = median
df["TotalCharges"] = df["TotalCharges"].astype(float)
 
# 將分類列轉換成 Categorical 型別
number_columns = ['tenure', 'MonthlyCharges', 'TotalCharges']
for column in number_columns:  df[column] = df[column].astype(float) #對三列變成float型別
for column in set(df.columns) - set(number_columns):  df[column] = pd.Categorical(df[column])
print(df.info())
print(df.describe(include=["category"]))

1.3執行結果

RangeIndex: 7043 entries, 0 to 7042  
Data columns (total 21 columns):
 #   Column            Non-Null Count  Dtype
---  ------            --------------  -----
 0   customerID        7043 non-null   category
 1   gender            7043 non-null   category
 2   SeniorCitizen     7043 non-null   category
 3   Partner           7043 non-null   category
 4   Dependents        7043 non-null   category
 5   tenure            7043 non-null   float64
 6   PhoneService      7043 non-null   category
 7   MultipleLines     7043 non-null   category
 8   InternetService   7043 non-null   category
 9   OnlineSecurity    7043 non-null   category
 10  OnlineBackup      7043 non-null   category
 11  DeviceProtection  7043 non-null   category
 12  TechSupport       7043 non-null   category
 13  StreamingTV       7043 non-null   category
 14  StreamingMovies   7043 non-null   category
 15  Contract          7043 non-null   category
 16  PaperlessBilling  7043 non-null   category
 17  PaymentMethod     7043 non-null   category
 18  MonthlyCharges    7043 non-null   float64
 19  TotalCharges      7043 non-null   float64
 20  Churn             7043 non-null   category
dtypes: category(18), float64(3)
memory usage: 611.1 KB
None
        customerID gender  SeniorCitizen Partner  ...        Contract PaperlessBilling     PaymentMethod Churn      
count         7043   7043           7043    7043  ...            7043             7043              7043  7043      
unique        7043      2              2       2  ...               3                2                 4     2      
top     0002-ORFBO   Male              0      No  ...  Month-to-month              Yes  Electronic check    No      
freq             1   3555           5901    3641  ...            3875             4171              2365  5174      

[4 rows x 18 columns] 

二、Pandas如何從股票資料找出收盤價最低行

實戰場景:Pandas如何從股票資料找出收盤價最低行

2.1主要知識點

  • 檔案讀寫
  • 基礎語法
  • Pandas
  • read_csv

2.2建立 python 檔案

"""
資料是CSV格式
1、載入到dataframe
2、找出收盤價最低的索引
3、根據索引找出資料行4 列印結果資料行
"""
import pandas as pd
 
df = pd.read_csv("./00700.HK.csv")
df["Date"] = pd.to_datetime(df["Date"])
df["Year"] = df["Date"].dt.year
df["Month"] = df["Date"].dt.month
print(df)
print(df.groupby("Year")["Close"].mean())
print(df.describe())

2.3執行結果

     Date     Open     High      Low    Close     Volume  Year  Month
0    2021-09-30  456.000  464.600  453.800  461.400   17335451  2021      9
1    2021-09-29  461.600  465.000  450.200  465.000   18250450  2021      9
2    2021-09-28  467.000  476.200  464.600  469.800   20947276  2021      9
3    2021-09-27  459.000  473.000  455.200  464.600   17966998  2021      9
4    2021-09-24  461.400  473.400  456.200  460.200   16656914  2021      9
...         ...      ...      ...      ...      ...        ...   ...    ...
4262 2004-06-23    4.050    4.450    4.025    4.425   55016000  2004      6
4263 2004-06-21    4.125    4.125    3.950    4.000   22817000  2004      6
4264 2004-06-18    4.200    4.250    3.950    4.025   36598000  2004      6
4265 2004-06-17    4.150    4.375    4.125    4.225   83801500  2004      6
4266 2004-06-16    4.375    4.625    4.075    4.150  439775000  2004      6

[4267 rows x 8 columns]
Year
2004      4.338686
2005      6.568927
2006     15.865951
2007     37.882724
2008     54.818367
2009     96.369679
2010    157.299598
2011    189.737398
2012    228.987045
2013    337.136066
2014    271.291498
2015    144.824291
2016    176.562041
2017    291.066667
2018    372.678862
2019    346.225203
2020    479.141129
2021    586.649189
Name: Close, dtype: float64

三、Pandas如何給股票資料新增年份和月份

實戰場景:Pandas如何給股票資料新增年份和月份

3.1主要知識點

 

  • 檔案讀寫
  • 基礎語法
  • Pandas
  • Pandas的Series物件
  • DataFrame

實戰:

3.2建立 python 檔案

"""
給股票資料新增年份和月份
"""
import pandas as pd
 
df = pd.read_csv("./00100.csv")
print(df)
 
# to_datetime變成時間型別
df["Date"] = pd.to_datetime(df["Date"])
df["Year"] = df["Date"].dt.year
df["Month"] = df["Date"].dt.month
 
print(df)

3.3執行結果

            Date     Open     High      Low    Close     Volume
0     2021-09-30  456.000  464.600  453.800  461.400   17335451
1     2021-09-29  461.600  465.000  450.200  465.000   18250450
2     2021-09-28  467.000  476.200  464.600  469.800   20947276
3     2021-09-27  459.000  473.000  455.200  464.600   17966998
4     2021-09-24  461.400  473.400  456.200  460.200   16656914
...          ...      ...      ...      ...      ...        ...
4262  2004-06-23    4.050    4.450    4.025    4.425   55016000
4263  2004-06-21    4.125    4.125    3.950    4.000   22817000
4264  2004-06-18    4.200    4.250    3.950    4.025   36598000
4265  2004-06-17    4.150    4.375    4.125    4.225   83801500
4266  2004-06-16    4.375    4.625    4.075    4.150  439775000

[4267 rows x 6 columns]
           Date     Open     High      Low    Close     Volume  Year  Month
0    2021-09-30  456.000  464.600  453.800  461.400   17335451  2021      9
1    2021-09-29  461.600  465.000  450.200  465.000   18250450  2021      9
2    2021-09-28  467.000  476.200  464.600  469.800   20947276  2021      9
3    2021-09-27  459.000  473.000  455.200  464.600   17966998  2021      9
4    2021-09-24  461.400  473.400  456.200  460.200   16656914  2021      9
...         ...      ...      ...      ...      ...        ...   ...    ...
4262 2004-06-23    4.050    4.450    4.025    4.425   55016000  2004      6
4263 2004-06-21    4.125    4.125    3.950    4.000   22817000  2004      6
4264 2004-06-18    4.200    4.250    3.950    4.025   36598000  2004      6
4265 2004-06-17    4.150    4.375    4.125    4.225   83801500  2004      6
4266 2004-06-16    4.375    4.625    4.075    4.150  439775000  2004      6

[4267 rows x 8 columns]

四、Pandas如何獲取表格的資訊和基本資料統計

實戰場景:Pandas如何獲取表格的資訊和基本資料統計

4.1主要知識點

  • 檔案讀寫
  • 基礎語法
  • Pandas
  • Pandas的Series物件
  • numpy

實戰:

4.2建立 python 檔案

import pandas as pd
import numpy as np
 
df = pd.DataFrame(  data={  "norm": np.random.normal(loc=0, scale=1, size=1000),  "uniform": np.random.uniform(low=0, high=1, size=1000),  "binomial": np.random.binomial(n=1, p=0.2, size=1000)},  index=pd.date_range(start='2021-01-01', periods=1000))
 
# df.info(),檢視多少行,多少列,型別等基本資訊
# df.describe(),檢視每列的平均值、最小值、最大值、中位數等統計資訊;
print(df.info())
print()
print(df.describe())

4.3執行結果  

DatetimeIndex: 1000 entries, 2021-01-01 to 2023-09-27
Freq: D
Data columns (total 3 columns):
 #   Column    Non-Null Count  Dtype
---  ------    --------------  -----
 0   norm      1000 non-null   float64
 1   uniform   1000 non-null   float64
 2   binomial  1000 non-null   int32
dtypes: float64(2), int32(1)
memory usage: 27.3 KB
None

              norm      uniform     binomial
count  1000.000000  1000.000000  1000.000000
mean     -0.028664     0.496156     0.215000
std       0.987493     0.292747     0.411028
min      -3.110249     0.000629     0.000000
25%      -0.697858     0.238848     0.000000
50%      -0.023654     0.503438     0.000000
75%       0.652157     0.746672     0.000000
max       3.333271     0.997617     1.000000

五、Pandas如何使用日期和亂數生成表格資料型別

實戰場景:Pandas如何使用日期和亂數生成表格資料型別

5.1主要知識點

  • 檔案讀寫
  • 基礎語法
  • Pandas
  • Pandas的Series物件
  • numpy

實戰:

5.2建立 python 檔案

"""
輸出:一個DataFrame,包含三列
1000個日期作為索引:從2021-01-01開始
資料列:正態分佈1000個亂數,loc=0,scale=1
資料列:均勻分佈1000個亂數,low=0,high=1
資料列:二項分佈1000個亂數,n=1,p=0.2
"""
 
import pandas as pd
import numpy as np
 
#生成索引列,1000天
date_range = pd.date_range(start='2021-01-01', periods=1000)
 
data = {  'norm': np.random.normal(loc=0, scale=1, size=1000),  'uniform': np.random.uniform(low=0, high=1, size=1000),  'binomial': np.random.binomial(n=1, p=0.2, size=1000)
}
df = pd.DataFrame(data=data, index=date_range)
print(df)

5.3執行結果 

                norm   uniform  binomial
2021-01-01  1.387663  0.223985         0
2021-01-02  2.080345  0.704094         0
2021-01-03  1.615880  0.012283         0
2021-01-04  0.523260  0.053396         0
2021-01-05 -0.872305  0.973047         0
...              ...       ...       ...
2023-09-23 -1.601608  0.423913         0
2023-09-24 -0.712566  0.727326         1
2023-09-25 -0.188441  0.879798         0
2023-09-26  2.249404  0.229298         0
2023-09-27  2.132976  0.472873         0

[1000 rows x 3 columns]

到此這篇關於Pandas如何對Categorical型別欄位資料統計實戰案例的文章就介紹到這了,更多相關Pandas Categorical資料統計內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com