pandas基礎(chǔ)筆記(1)--理論篇

場景識別

  • numpy 適合于處理同質(zhì)型的數(shù)值類數(shù)組數(shù)據(jù)
  • pandas適合于處理表格型或異質(zhì)型數(shù)據(jù)

工具數(shù)據(jù)結(jié)構(gòu)

  • series
    • 包含索引的數(shù)值序列,類似numpy數(shù)組
    • 通過values和index屬性分別獲得值和索引
    • 通常需要創(chuàng)建索引標(biāo)簽來標(biāo)識每個數(shù)據(jù)點
    • 可以通過索引的方式選取Series中的單個或一組值
    • 還可以將Series看成是一個定長的有序字典
    • 如果數(shù)據(jù)被存放在一個Python字典中,也可以直接通過這個字典來創(chuàng)建:Seriesobj3 = pd.Series(dict_data)
    • pandas的isnull和notnull函數(shù)可用于檢測缺失數(shù)據(jù)
    • series也可以使用isnull和notnull判斷函數(shù)
    • Series最重要的一個功能是,它會根據(jù)運算的索引標(biāo)簽自動對齊數(shù)據(jù),可以認(rèn)為是類似join的操作
    • Series對象本身及其索引都有一個name屬性,該屬性跟pandas其他的關(guān)鍵功能關(guān)系非常密切
    • Series的索引可以通過賦值的方式就地修改
  • dataframe:
    • 是一個表格型的數(shù)據(jù)結(jié)構(gòu),它含有一組有序的列,每列可以是不同的值類型(數(shù)值、字符串、布爾值等)。DataFrame既有行索引也有列索引,它可以被看做由Series組成的字典(共用同一個索引)
    • 創(chuàng)建dataframe:直接傳入一個由帶標(biāo)簽的等長列表或NumPy數(shù)組組成的字典
    • 通過類似字典標(biāo)記的方式或?qū)傩缘姆绞剑梢詫ataFrame的列獲取為一個Series
    • 行也可以通過位置或名稱的方式進行獲取,比如用loc屬性frame2.loc['three']
    • 列可以通過賦值的方式進行修改,賦值一個標(biāo)量或者一組值
    • 為不存在的列賦值會創(chuàng)建出一個新列。關(guān)鍵字del用于刪除列
    • dataFrame的index和columns的name屬性
    • 跟Series一樣,values屬性也會以二維ndarray的形式返回DataFrame中的數(shù)據(jù)
    • Index對象是不可變的,因此用戶不能對其進行修改
    • 與python的集合不同,pandas的Index可以包含重復(fù)的標(biāo)簽

基本功能

  • reindex,其作用是創(chuàng)建一個新對象,它的數(shù)據(jù)符合新的索引,不存在的索引處插入缺失值
  • method選項,使用ffill可以實現(xiàn)前向值填充
  • 借助DataFrame,reindex可以修改(行)索引和列。只傳遞一個序列時,會重新索引結(jié)果的行
  • (Series)丟棄指定軸上的項,drop方法返回的是一個在指定軸上刪除了指定值的新對象
  • (dataframe)用標(biāo)簽序列調(diào)用drop會從行標(biāo)簽(axis=0)刪除值,通過傳遞axis=1或axis=’columns’可以刪除列的值
  • 小心使用inplace,它會銷毀所有被刪除的數(shù)據(jù)
  • 利用標(biāo)簽的切片運算與普通的Python切片運算不同,其末端是被包含的
  • 通過切片或布爾型數(shù)組選取數(shù)據(jù)
  • 用loc和iloc進行選取
    • data.loc['Colorado', ['two', 'three']]
    • data.iloc[2, [3, 0, 1]]
    • data.loc[:'Utah', 'two']
    • data.iloc[:, :3][data.three > 5]
    • df.at[i,j]
    • df.iat[i,j]
    • 為了進行統(tǒng)一,如果軸索引含有整數(shù),數(shù)據(jù)選取總會使用標(biāo)簽。為了更準(zhǔn)確,請使用loc(標(biāo)簽)或iloc(整數(shù))
  • 算術(shù)運算和數(shù)據(jù)對齊
    • 在將對象相加時,如果存在不同的索引對,則結(jié)果的索引就是該索引對的并集。對于有數(shù)據(jù)庫經(jīng)驗的用戶,這就像在索引標(biāo)簽上進行自動外連接
    • 自動的數(shù)據(jù)對齊操作在不重疊的索引處引入了NA值。缺失值會在算術(shù)運算過程中傳播
  • 在算術(shù)方法中填充值
    • 當(dāng)一個對象中某個軸標(biāo)簽在另一個對象中找不到時填充一個特殊值(比如0)
    • df1 + df2
    • df1.add(df2, fill_value=0)
  • DataFrame和Series之間的運算
    • 當(dāng)我們從arr減去arr[0],每一行都會執(zhí)行這個操作。這就叫做廣播(broadcasting)
    • 如果某個索引值在DataFrame的列或Series的索引中找不到,則參與運算的兩個對象就會被重新索引以形成并集、
    • 如果你希望匹配行且在列上廣播,則必須使用算術(shù)運算方法

函數(shù)應(yīng)用和映射

  • NumPy的ufuncs(元素級數(shù)組方法)也可用于操作pandas對象
  • 將函數(shù)應(yīng)用到由各列或行所形成的一維數(shù)組上。DataFrame的apply方法即可實現(xiàn)此功能
    • f = lambda x: x.max() - x.min()
    • 大部分的統(tǒng)計工作已經(jīng)被設(shè)計成了dataframe的方法
    • def f(x): return pd.Series([x.min(), x.max()], index=['min', 'max'])
    • 元素級的Python函數(shù):format = lambda x: '%.2f' % x 對每個元素操作frame.applymap(format)

排序和排名

  • 要對行或列索引進行排序(按字典順序),可使用sort_index方法根據(jù)任意一個軸上的索引進行排序
  • 若要按值對Series進行排序,可使用其sort_values方法
  • 當(dāng)排序一個DataFrame時,你可能希望根據(jù)一個或多個列中的值進行排序。將一個或多個列的名字傳遞給sort_values的by選項即可達到該目的
  • rank是通過“為各組分配一個平均排名”的方式破壞平級關(guān)系的obj.rank()

帶有重復(fù)標(biāo)簽的軸索引

  • 對于帶有重復(fù)值的索引,數(shù)據(jù)選取的行為將會有些不同。如果某個索引對應(yīng)多個值,則返回一個Series;而對應(yīng)單個值的,則返回一個標(biāo)量值

匯總和計算描述統(tǒng)計

  • 常用統(tǒng)計指標(biāo)
  • 相關(guān)系數(shù)與協(xié)方差
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容