Pandas如何對Categorical類型字段數據統計實戰案例

一、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數據統計內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: