場景識別
- 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é)方差