Python data science two pandas basic
阿新 • • 發佈:2018-11-17
from pandas import Series
import pandas as pd
s=Series([1,2,'ww','tt'])
s
#series可以自定義索引 s2=Series(['wangxing','man',24],index=['name','sex','age']) #可以重新賦值 s2['name']='wudadiao' s2['wife']=None ##類似於dict字典 info={ 'name':'無大招', 'age':24, 'gender':'man' } s3=Series(info) s3.isnull()判斷是否為空 #對於索引的名字是可以重新定義的 s3.index=['a','b','c',"D"] s3 #但是要對於所有的索引重新賦值 #dataframe是一種二維陣列的資料結構,可以通過column和index來確定它的值 from pandas import Series,DataFrame data={"name":['goole','baidu','sogou'],"marks":[1,2,3],"price":[3,2,1]} f1=DataFrame(data)
f2=DataFrame(data,columns=['name','marks','price'],index=['a','b','c']) f2#索引也能夠自定義 new_data={'name':{'first':'Python','second':'Java'},'marks':{'first':1,'second':2}} f3=DataFrame(new_data) f3#使用字典套字典的形式將索引給進去 f3['name']#使用索引指定不了行???,就是隻能對列進行操作,擷取的時候只能前幾行 f3.head(1)#對行進項操作的時候能進行操作 f3['name']['first'] #col index進行指定,也就是說列名col比較高的意思
總結:
------資料檢視---------- # 檢視前5行,5為數目,不是索引,預設為5 data.head() # 檢視最後6行,6為數目,不是索引,預設為5 data.tail(6) # 檢視資料的形狀 data.shape # 檢視資料的列數,0為行1位列 data.shape[1] # 檢視所有的列名 data.columns # 檢視索引 data.index # 檢視每一列資料的型別 data.dtypes # 檢視資料的維度 data.ndim --------------資料索引----------------- # 取出單獨某一列 X = data['X'] # 取出多列 XY = data[['X','Y']] # 取出某列的某一行 data['X'][1] # 取出某列的某幾行 data['X'][:10] # 取出某幾列的某幾行 data[['X','Y']][:10] # loc方法索引 ''' DataFrame.loc[行名,列名] ''' # 取出某幾列的某一行 data.loc[1,['X','月份']] # 取出某幾列的某幾行(連續) data.loc[1:5,['X','月份']] # 取出某幾列的某幾行(連續) data.loc[[1,3,5],['X','月份']] # 取出 x ,FFMC ,DC的0-20行所有索引名稱為偶數的資料 data.loc[range(0,21,2),['X','FFMC','DC']] # iloc方法索引 ''' DataFrame.iloc[行位置,列位置] ''' # 取出某幾列的某一行 data.iloc[1,[1,4]] # 取出列位置為偶數,行位置為0-20的偶數的資料 data.iloc[0:21:2,0:data.shape[1]:2] # ix方法索引 ''' DataFrame.ix[行位置/行名,列位置/列名] ''' ## 取出某幾列的某一行 data.ix[1:4,[1,4]] data.ix[1:4,1:4]
-----------------時間提取------------------
# 時間型別資料轉換
data['發生時間'] = pd.to_datetime(data['發生時間'],format='%Y%m%d%H%M%S')
# 提取day
data.loc[1,'發生時間'].day
# 提取日期資訊新建一列
data['日期'] = [i.day for i in data['發生時間']]
--------------Groupby物件常見方法----------------
Grouped物件的agg方法:
Grouped.agg(函式或包含了欄位名和函式的字典)
# 第一種情況
group[['年齡','工資']].agg(min)
# 對不同的列進行不同的聚合操作
group.agg({'年齡':max,'工資':sum})
# 上述過程中使用的函式均為系統math庫所帶的函式,若需要使用pandas的函式則需要做如下操作
group.agg({'年齡':lambda x:x.max(),'工資':lambda x:x.sum()})
Grouped.apply(函式操作)
只能對所有列執行同一種操作
group.apply(lambda x:x.max())
----------Grouped物件的transform方法(這個不常用????)-------------------
grouped.transform(函式操作)
transform操作時的物件不再是每一組,而是每一個元素
# 每一空新增字元
group['年齡'].transform(lambda x: x.astype(str)+'歲').head()
# 組內標準化
group1['工資'].transform(lambda x:(x.mean()-x.min())/(x.max()-x.min())).head()