【python】通過Mutilindex生成二維表數據


一,Mutilindex

MultiIndex表示多級索引,它是從Index繼承過來的,其中多級標簽用元組對象來表示。

1. 創建get_list自定義函數

作用:通過size參數傳入獲取值的個數。items則是列表中的所有元素。sample函數會自動在列表范圍內隨機選取數據。replace=False代表選取出來的數據唯一。replace=True代表選取出來的數據允許重復。

import pandas as pd
from datetime import datetime

#replace參數為True允許元素重復,為False則元素不重復

def get_list(items,size=10):
    return pd.Series(items).sample(n=size,replace=False).to_list()


city =["上海","北京","深圳","杭州","蘇州","青島","大連","齊齊哈爾","大理","麗江",
          "天津","濟南","南京","廣州","無錫","連雲港","張家界"]

get_list(city)

2. 通過自定義函數生成DataFrame數據

注釋:DataFrame中的數據創建時通過dict字典來創建的。key為二維表格中的列名,values則為通過get_list函數生成的數據。

#通過函數創建DataFrame對象

def get_list(items,size=20):
    return pd.Series(items).sample(n=size,replace=True).to_list()

df = pd.DataFrame({
     "城市":get_list(city),
     "倉位":get_list(["經濟艙","商務艙","頭等艙"]),
     "航線":get_list(["單程","往返"]),
     "日期": get_list([datetime(2020,8,1),datetime(2020,8,2),
                     datetime(2020,8,3),datetime(2020,8,4)]),
     "時間": get_list(["09:00 - 12:00",
                        "13:00 - 15:30",
                        "06:30 - 15:00",
                        "18:00 - 21:00",
                        "20:00 - 23:20",
                        "10:00 - 15:00"]),
     "航空公司": get_list(["東方航空","南方航空","深圳航空","山東航空","中國航空"]),
     "出票數量":get_list([10,15,20,25,30,35,40,45,50,55,60]),
    })
df

#%%

3. 通過Pivot_table 透視表對二維表格進行數據統計

注釋:可以通過pivot_table函數把生成的二維表格作為參數傳入,並對其指定index,columns,values及統計數據相關的函數(aggfunc=sum)。這樣可以對數據進行進一步的過濾跟統計,達成我們的需求。

#%%

#可以根據數據隨意指定行列,統計數據

def get_list(items,size=1000):
    return pd.Series(items).sample(n=size,replace=True).to_list()

df = pd.DataFrame({
     "城市":get_list(city),
     "倉位":get_list(["經濟艙","商務艙","頭等艙"]),
     "航線":get_list(["單程","往返"]),
     "日期": get_list([datetime(2020,8,1),datetime(2020,8,2),
                     datetime(2020,8,3),datetime(2020,8,4)]),
     "時間": get_list(["09:00 - 12:00",
                        "13:00 - 15:30",
                        "06:30 - 15:00",
                        "18:00 - 21:00",
                        "20:00 - 23:20",
                        "10:00 - 15:00"]),
     "航空公司": get_list(["東方航空","南方航空","深圳航空","山東航空","中國航空"]),
     "出票數量":get_list([10,15,20,25,30,35,40,45,50,55,60]),
    })

#通過pivot_table(t透視表)方法統計數據,日常數據統計中非常常用。
df01 = pd.pivot_table(
    df,
    index= ["城市","日期"], 
    columns= ["航空公司","航線"],
    values= "出票數量",
    aggfunc= sum,
)

#將NaN的值全部轉成0
df01 = df01.fillna(0)
df01

#%%

4. 將創建及統計好的數據保存到Excel中

df01.to_excel(R"C:\Users\Administrator\PycharmProjects\python_Basic\Pandas_to_Excel\20200804\datas\output_data1.xlsx",
              )
print("Done!!")

 


免責聲明!

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



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