柚子快報激活碼778899分享:Pandas函數(shù)匯總
柚子快報激活碼778899分享:Pandas函數(shù)匯總
一、Pandas數(shù)據(jù)結構
????????1. Series
????????????????1)Series的創(chuàng)建
????????????????????????s = Series(a)? ?# a:列表或NumPy數(shù)組或字典
? ? ? ? ? ? ? ? 2)Series的屬性
????????????????????????s.values? ?# 值
????????????????????????s.index? ?# 索引
? ? ? ? ? ? ? ? 3)Series的索引
????????????????????????(1) 顯式索引(閉區(qū)間):
? ? ? ? ? ? ? ? ? ? ? ? ????????s[ key ] #?使用index中的元素作為索引值
? ? ? ? ? ? ? ? ? ? ? ? ????????s.loc[ key ] #?使用index中的元素作為索引值
????????????????????????(2) 隱式索引(半開區(qū)間):
? ? ? ? ? ? ? ? ? ? ? ? ????????s[ n?] # 使用整數(shù)作為索引值
? ? ? ? ? ? ? ? ? ? ? ? ????????s.iloc[ n ] #?使用整數(shù)作為索引值
?????????????? ?4)Series的切片
????????????????????????(1) 顯式切片(閉區(qū)間):
????????????????????????????????s[key: key1] ????????????????????????????????s.loc[key: key1]
????????????????????????(2) 隱式切片(閉區(qū)間):
????????????????????????????????s[start: end] ????????????????????????????????s.iloc[start: end]? ? ??
?????????????? ?5)Series的屬性和方法
?????????????????????????(1) 屬性:
????????????????????????????????s.shape ?# 形狀 ????????????????????????????????s.size ?# 元素個數(shù) ????????????????????????????????s.index ?# 索引 ????????????????????????????????s.values ?# 值 ????????????????????????????????s.dtype ?# 元素類型
? ? ? ? ? ? ? ? ? ? ? ? ?(2) 方法:
????????????????????????????????head(s) ?# 查看前幾條數(shù)據(jù),默認5條
????????????????????????????????tail(s) ?# 查看后幾條數(shù)據(jù),默認5條? ? ? ? ? ? ? ? ? ??
????????????????????????????????pd.isnull(s) ?# 檢查是否為空
????????????????????????????????pd.notnull(s) ?#?檢查是否為非空
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? s.isnull() ?# 檢查是否為空
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??s.notnull() ?#?檢查是否為非空? ? ? ?
? ? ? ? ? ? ? ? 6)Series的運算
????????????????????????(1) 適用于NumPy的數(shù)組運算也適用于Series
????????????????????????????????s + 100?#?加 ????????????????????????????????s - 100 # 減 ????????????????????????????????s * 100 # 乘 ????????????????????????????????s / 100 # 除 ????????????????????????????????s // 10 # 整除 ????????????????????????????????s ** 2 # 冪
????????????????????????(2) Series之間的運算
????????????????????????????????s2 + s1 #?加 ????????????????????????????????s2 - s1 # 減 ????????????????????????????????s2 * s1 # 乘 ????????????????????????????????s2 / s1 # 除 ????????????????????????????????s2 // s1 # 整除 ????????????????????????????????s2 ** s1 # 冪
????????????????????????????????s1.add(s2, fill_value)
????????2. DataFrame
????????????????1)DataFrame的創(chuàng)建
????????????????????????df = DataFrame(d) #d:字典
? ? ? ? ? ? ? ?2)?DataFrame屬性和方法 ? ? ? ? ? ? ? ? ? ? ?
????????????????????????values # 值
????????????????????????columns # 列索引
????????????????????????index # 行索引
????????????????????????shape # 形狀
????????????????????????head() # 查看前幾行數(shù)據(jù)
????????????????????????tail() # 查看后幾行數(shù)據(jù)? ? ? ??
? ? ? ? ? ? ? ? 3)DataFrame的索引
????????????????????????(1) 對列進行索引 ? ? ? ? ? ? ? ?
????????????????????????????????通過類似字典的方式
????????????????????????????????通過屬性的方式
????????????????????????(2) 對行進行索引
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? a.loc[ ] # index
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? a.iloc[ ] # 整數(shù)
????????????????????????(3) 對元素索引的方法
????????????????????????????????使用列索引
????????????????????????????????使用行索引(iloc[3,1]相當于兩個參數(shù);iloc[[3,3]] 里面的[3,3]看做一個參數(shù))
????????????????????????????????使用values屬性(二維numpy數(shù)組)? ? ?
? ? ? ? ? ? ? ? 4)DataFrame的切片
????????????????????????# 索引: 優(yōu)先使用列索引, 先取行就需要寫loc或iloc ????????????????????????# 切片: 優(yōu)先按行切片, 和Numpy操作類似
????????????? ? 5)DataFrame的運算
????????????????????????(1) DataFrame之間的運算
????????????????????????????????df1 + 100 # DataFrame和數(shù)的運算
????????????????????????????????df1 + df2 # DataFrame之間的運算
????????????????????????????????df1.add(df2, fill_value) # 自動填充, 再相加
????????????????????????(2)Series與DataFrame之間的運算
????????????????????????????????df1 + s #?直接相加
????????????????????????????????df1.add(s, axis)?# 使用add函數(shù)
二、Pandas層次化索引
????????1. 創(chuàng)建多層行索引
????????????????1) 隱式構造
????????????????????????index參數(shù)傳遞兩個或更多的數(shù)組
????????????????????????Series也可以創(chuàng)建多層索引
????????????????2) 顯示構造
????????????????????????pd.MultiIndex.from_arrays(array)
????????????????????????pd.MultiIndex.from_tuples(tuple)
????????????????????????pd.MultiIndex.from_product(product)
????????2. 創(chuàng)建多層列索引(同行索引)
????????????????????????除了行索引index,列索引columns也能用同樣的方法創(chuàng)建多層索引
????????3. 多層索引對象的索引與切片操作
????????????????1)Series的操作
????????????????????????s['1班'] # 顯式索引 ????????????????????????s.loc['1班'] # 顯式索引
????????????????????????s[1] # 隱式索引 ????????????????????????s.iloc[1] # 隱式索引
????????????????????????s['1班': '1班'] # 顯式切片 ????????????????????????s.loc['1班': '2班'] # 顯式切片
????????????????????????s[1: 4] # 隱式切片 ????????????????????????s.iloc[1: 5] # 隱式切片
????????????????2)DataFrame的操作
????????????????????????df['期中']# 列索引
????????????????????????df.loc['1班']?# 行索引
????????????????????????df.iloc[1:5]# 行切片
????????????????????????df.iloc[:, 1: 5]# 列切片
????????4. 索引的堆疊
????????????????df.stack(level,fill_value)
????????????????df.unstack(level,fill_value)
????????5. 聚合操作
? ? ? ? ? ? ? ? ?df.sum(axis, level) # 求和
? ? ? ? ? ? ? ? ?df.average(axis, level) # 平均值
?????????????????df.max(axis, level) # 最大值
? ? ? ? ? ? ? ? ?df.min(axis, level) # 最小值
三、Pandas數(shù)據(jù)合并
????????1. 使用pd.concat()級聯(lián)
? ? ? ? ? ? ? ? (1) 簡單級聯(lián)
????????????????????????pd.concat([df1, df2]) # 上下合并,垂直合并
????????????????????????pd.concat([df1, df2], axis=1)??# 左右合并,水平合并
????????????????????????pd.concat([df1, df2], ignore_index=True) ?# 忽略行索引,重置行索引
????????????????????????pd.concat([df1, df2], keys=['x', 'y'])? # 使用多層索引 keys?
? ? ? ??????????(2) 不匹配級聯(lián)
????????????????????????pd.concat([df3, df4]) # 對應索引沒有值的會自動用NaN填充
????????????????????????pd.concat([df3, df4], join='outer')?# 外連接:補NaN(默認模式), 默認 值 outer,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?類似并集, 所有數(shù)據(jù)都會顯示
????????????????????????pd.concat([df3, df4], join='inner')# 內連接:只連接匹配的項, 交集, 只顯示共同的? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 列行
????????2. 使用append()函數(shù)添加
????????????????df3.append(df4, sort)
????????3.使用merge()合并
????????????????1) 合并
????????????????????????df1.merge(df2)
??????????? ? ? 2) key的規(guī)范化
????????????????????????df1.merge(df2, on)
????????????????????????df1.merge(df2, left_on, right_on)
????????????????3) 內合并與外合并
????????????????????????df1.merge(df2, how)
????????????????4) 添加后綴
????????????????????????df1.merge(df2, on,?suffixes)
四、Pandas缺失值處理
????????1. 判斷函數(shù):
????????????????df.isnull().any(axis) ?# 常用, 盡可能找到所有的空值
????????????????df.notnull().all(axis) ?# 常用,盡可能找到所有的空值
????????2. 過濾函數(shù)
????????????????df.dropna() ?# 默認是刪除有空的行
????????????????df.dropna(axis=1) ?# 刪除有空的列
????????????????df.dropna(how='any') ?# 默認值,默認有空就會刪除
????????????????df.dropna(how='all', axis=1) ?# 所有的值都為空(整行或整列為空),才刪除
????????????????df2.dropna(inplace=True)?# inplace=True: 表式修改原數(shù)據(jù)
????????3. 填充函數(shù) Series/DataFrame
????????????????df.fillna(value=100)# 填充
????????????????df2.fillna(value=100, limit=1, inplace=True)# limit: 限制對應維度上填充的次數(shù)
????????????????df.fillna(method='ffill') ?# 用上面數(shù)據(jù)來填充自己
????????????????df.fillna(method='bfill') ?# 用下面數(shù)據(jù)來填充自己
????????????????df.fillna(method='ffill', axis=1) ?# 用左邊數(shù)據(jù)來填充自己
????????????????df.fillna(method='bfill', axis=1) ?# 用右邊數(shù)據(jù)來填充自己
五、Pandas處理重復值和異常值
????????1. 刪除重復行
? ? ? ? ? ? ? ? df.duplicated(keep='first') ?# 保留第一行
????????????????df.duplicated(keep='last') ?# 保留最后一行
????????????????df.duplicated(keep=False) ?# 標記所有重復行
????????2. 映射
????????????????1) replace()函數(shù):替換元素
????????????????2) map()函數(shù): 適合處理某一單獨的列
????????????????3) rename()函數(shù):替換索引
????????????????4) apply()函數(shù):既支持 Series,也支持 DataFrame
????????????????5) transform()函數(shù)
????????3. 異常值檢測和過濾
????????????????describe(): 查看每一列的描述性統(tǒng)計量
????????????????df.std() : 可以求得DataFrame對象每一列的標準差
????????????????df.drop(): 刪除特定索引
????????????????unique() : 唯一,去重
????????????????query() : 按條件查詢
????????????????df.sort_values(): 根據(jù)值排序
????????????????df.sort_index(): 根據(jù)索引排序
????????????????df.info(): 查看數(shù)據(jù)信息
????????4. 抽樣
????????????????使用.take()函數(shù)排序
????????????????可以借助np.random.permutation()函數(shù)隨機排序
六、Pandas數(shù)學函數(shù)
????????1. 聚合函數(shù)
????????????????df.count() # 非空值的數(shù)量
????????????????df.max() # 最大值,axis=0/1
????????????????df.min() # 最小值, axis=0/1
????????????????df.median() # 中位數(shù)
????????????????df.sum() # 求和
????????????????df.mean(axis=1) # 每一行的平均值
????????????????df[0].value_counts() # 統(tǒng)計元素出現(xiàn)次數(shù)
????????????????df.cumsum() # 累加
????????????????df.cumprod() # 累乘
????????????????df.var() # 方差
????????????????df.std() # 標準差
? ? ? ? 2. 其他數(shù)學函數(shù)
????????????????df.cov()?# 協(xié)方差
????????????????df.corr() # 所有屬性相關性系數(shù)
????????????????df.corrwith(df[2]) # 單一屬性相關性系數(shù)
七、 數(shù)據(jù)分組聚合
????????df.groupby(by='color')?# 使用.groups屬性查看各行的分組情況:
? ? ? ? df.groupby(by='color').groups?# 根據(jù)color進行分組
? ? ? ? df.groupby(by='color').sum() # 分組 + 聚合
八、Pandas加載數(shù)據(jù)
? ? ? ? 1.CSV數(shù)據(jù)
????????????????df.to_csv('data.csv',sep header,?index)# 保存到csv
????????????????pd.read_csv('data.csv',sep,header,index_col) # 加載csv數(shù)據(jù)
????????????????pd.read_table('data.csv', sep,header,index_col)? # 加載csv數(shù)據(jù)
? ? ? ???2.excel數(shù)據(jù)
????????????????df.to_excel('data.xls',sheet_name,header,index)# 保存到excel文件
????????????????pd.read_excel('data.xls',sheet_name,header,names,index_col)# 讀取excel
? ? ? ???3.MySQL數(shù)據(jù)
????????????????df.to_sql('score',?conn,index,if_exists) # 保存到MySQL
????????????????pd.read_sql('select * from score',conn,index_col) # 從MySQL中加載數(shù)據(jù)
九、Pandas分箱操作
????????df.Python.values # 對Python列進行分箱
????????pd.cut(df.Python, bins)?# 等寬分箱
????????pd.cut(df.Python,bins,right,labels)?# 指定寬度分箱
????????pd.qcut(df.Python,q,labels)?# 等頻分箱
十、Pandas繪圖??
????????1. 折線圖
????????????????s.plot()
????????2. 條形圖/柱形圖
????????????????s.plot(kind='barh') ? # 條形圖
????????????????s.plot(kind='bar') ? # 柱狀圖
????????3. 餅圖
????????????????df.plot.pie(subplots, figsize, autopct)
????????4. 散點圖
????????????????df.plot(kind='scatter', x='A', y='B')?# scatter: 散點圖
????????????????df.plot.scatter(x='A', y='B') ?# A和B關系繪制
????????5. 面積圖
????????????????df.plot.area(stacked) ?# stacked 是否堆疊
????????6. 箱型圖
????????????????df.plot.box()
????????????????df.plot(kind='box')
????????7. 直方圖
????????????????df.plot.hist(alpha) # 帶透明度直方圖
????????????????df.plot.hist(stacked) ?# 堆疊圖
????????????????df['A'].plot(kind='hist')
????????????????df.plot(kind='hist')
????????????????
????????????????
????????
????????
? ? ? ? ? ? ? ??
????????????????
????????????????
???????????????????????????
柚子快報激活碼778899分享:Pandas函數(shù)匯總
相關鏈接
本文內容根據(jù)網絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉載請注明,如有侵權,聯(lián)系刪除。