pandas 判断是否等于nan_Python之pandas笔记
一、創(chuàng)建
1.創(chuàng)建 Series (一維,帶標簽的數(shù)組)
t = pd.Series(np.arange(10), index= list(string.ascii_uppercase[:10]))
2.創(chuàng)建 DataFrame (二維,Series的容器 )
t = pd.DataFrame(np.arange(6).reshape((2,3)), index=list('ab'),columns=list('csr') )
3.DataFrame的基礎屬性
#行列數(shù) print(tt2.shape) #列數(shù)據(jù)類型 print(tt2.dtypes) #數(shù)據(jù)維度 print(tt2.ndim) #行索引 print(tt2.index) #列索引 print(tt2.columns) #對象值(二維數(shù)組) print(tt2.values)
4.DataFrame整體情況的查詢
#顯示頭部的幾行默認五行 print(tt2.head(2)) #顯示末尾幾行 默認五 print(tt2.tail()) 顯示相關的信息 print(http://tt2.info()) 快速的縱隔統(tǒng)計記過: (計數(shù),均值,標準差,最大值,四分位數(shù), 最小值) print(tt2.describe())
5.DataFrame 對數(shù)據(jù)排序 (升序或者降序)
a) 升序 d1 = dogname.sort_values(by="Count_AnimalName") b) 降序 d2 = dogname.sort_values(by="Count_AnimalName", ascending=False)
6.取行取列操作
數(shù)字取行, 字符串取列 d2[:20]['Row_Labels'] df.loc方法:(通過標簽索引行數(shù)據(jù)) print(csv.loc[['a','b'],['w','r']]) 遍歷的形式,包括后面的r列 print(csv.loc[['a','b'],'w':'r']) df.iloc方法 (通過位置獲取行數(shù)據(jù)) print(csv.iloc[[0,2],[2]]) 遍歷的形式,不包括后面的3行 print(csv.iloc[0:3,[2,3]])
7.pandas布爾值類型條件
多個條件可以 通過 & 鏈接 dogname[(dogname['Count_AnimalName']>50) & (dogname['Row_Labels'].str.len()>4)]
8.對nan的一些操作
a) 判斷是否為 nan : pd.isnull(t) 或者 pd.notnull(t) b) 刪除nan所在行列: t.dropna(axis=0, how='any', inplace=False) how:any/all(全為nan刪除) inplace是否直接替換 c) 填充nan: t.fillna(t.mean()) d) 將0改為nan:t[t==0] = np.nan
9.對于過長的DataFrame與numpy使用print打印時,全部顯示(不會出現(xiàn)省略號)
a) 對于DataFrame: 1)顯示所有的列: pd.set_option('display.max_columns', None) 2) 顯示所有的行: pd.set_option('display.max_rows', None) b)對于numpy: numpy.set_printoptions(threshold = np.inf) #若想不以科學計數(shù)顯示: numpy.set_printoptions(suppress = True)
10.數(shù)組合并之join / merge
a) join:默認情況下把行索引相同的數(shù)據(jù)合并到一起: df1.join(df2) 注意:根據(jù)前面的行列進行合并,假如兩個df制定了列,則不可有重復列名 b) merge:根據(jù)列索引進行合并 1)默認為內(nèi)連接(交集): df1.merge(df2, on='c') (假如都合適,22會出現(xiàn)四行數(shù)據(jù)) 2)merge outer外連接(并集):df1.merge(df2, on='c', how='outer')把除了交際以外的數(shù)據(jù),顯示c有的那一個df的數(shù)據(jù),沒有的補充nan 3)merge left 左連接(根據(jù)左邊的df) 4)merge right右連接(根據(jù)右邊的df
11.分組與聚合
1) grouped = df.groupby(by='列索引') #根據(jù)此列數(shù)據(jù)進行分組 2) grouped 是一個DataFrameGroupBy對象,是可迭代的 3) grouped中的每一個元素是一個元組 4) 元組里面是 (索引(分組的值),分組后的DataFrame)
12.DataFrameGroupBy 對象有很多經(jīng)過優(yōu)化的方法
13.簡單的索引操作
1) 獲取index: df.index 2) 指定index: df.index = ['x', 'y'] 3) 重新設置index: df.reindex(list("abc")) #這個操作類似查詢,在df中取出有"abc"列的數(shù)據(jù),沒有的nan填充 4) 指定索引(index)為 某一列: df.set_index("列名",drop=Fasle) #drop指定Fasle,指定列成為索引,此列也為數(shù)據(jù) 5) 返回index的唯一值(去重): df.set_index('列名').index.unique()
14.從復合索引中取值
Series) 1) s1['a']['b'] 2) s1['a', 'b'] DataFrame) df.loc['a'].loc['b']
15.從內(nèi)層索引開始取值
df.swaplevel()
16.pandas中的時間序列
1)生成時間范圍 開始結(jié)束時間) pd.date_range(start="2001-01-01", end="2002-01-01", freq="10D") 開始時間和生成個數(shù))pd.date_range(start="2001-01-01", periods = 10, freq= "WOM-3FRI") 2)時間字符串轉(zhuǎn)換成 時間序列 df["timeStamp"] = pd.to_datetime(df["timeStamp"], format="") format對panda無法格式化的時間字符串進行處理,詳情搜索
17.pandas重采樣重采樣:
指的是將時間序列從一個頻率轉(zhuǎn)換成另一個頻率進行處理的過程。將高頻率轉(zhuǎn)換成低頻率數(shù)據(jù)為降采樣,低頻率轉(zhuǎn)換成高頻率為升采樣pandas提供一個 resample 的方法來幫助我們實現(xiàn)頻率轉(zhuǎn)化例如 以月份進行統(tǒng)計t.resample("M").mean()
18.PeriodIndex
DatetimeIndex 可以理解為時間戳 那么 PeriodIndex可以理解為時間段 例子: periods = pd.PeriodIndex( year=data["year"], month=data["month"],day=data["day"],hour=data["hour"], freq="H" ) 如何給這個時間段降采樣? data = df.set_index(periods).resample("10D").mean()
19.時間類型轉(zhuǎn) 字符串類型
time.strftime('%y%m%d')
總結(jié)
以上是生活随笔為你收集整理的pandas 判断是否等于nan_Python之pandas笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 名字笔画数22吉凶情况,姓名笔画为二十二
- 下一篇: 与果果乳名相近的乳名