python:pandas中dataframe的基本用法匯總


更加詳細的內容可以查看:https://blog.csdn.net/hhtnan/article/details/80080240 (基本函數整理)

一.  DataFrame的創建

  創建一個空的dataframe 

df=pd.DataFrame(columns={"a":"","b":"","c":""},index=[0])

  out:

     a    c    b
0  NaN  NaN  NaN

 用list的數據創建dataframe:

a = [['2', '1.2', '4.2'], ['0', '10', '0.3'], ['1', '5', '0']]
df = pd.DataFrame(a, columns=['one', 'two', 'three'])
print df

  out:

  one  two three
0   2  1.2   4.2
1   0   10   0.3
2   1    5     0

   用numpy的矩陣創建dataframe

array = np.random.rand(5,3)
df = pd.DataFrame(array,columns=['first','second','third'])

  用dict的數據創建DataFrame

data = { 'row1' : [1,2,3,4], 'row2' : ['a' , 'b' , 'c' , 'd'] }
df = pd.DataFrame(data)

 

dict = { 'row1' : [1,2,3,4], 'row2' : ['a' , 'b' , 'c' , 'd'] }
df = pd.DataFrame.from_dict(dict,orient='index').T

   

  讀取csv或者excel文件為DataFrame格式

df=pd.read_csv('D:/Program Files/example.csv')

  excel一個表格中可能有多個sheet,sheetname可以進行選取

df = df.read_excel('D:/Program Files/example.xls',sheetname=0)

  


 

二. DataFrame的一些描述和類型

   describe會顯示dataframe的一些基本統計數據,數量、均值、中位數、標准差等

   head會顯示dataframe的前幾行,后幾行:

print df.describe()
print df.head()
print df.tail(10)

  單獨計算某列的統計值

df['one'].sum()
df['one'].mean()
df['one'].count()
df['one'].max()
df['one'].min()

  查看dataframe的數據類型:

print (df.dtypes)

  查看dataframe的數據數目:

print (df.size)

  查看dataframe的形狀:

print (df.shape)

  返回列數:

print (df.ndim)

  查看橫縱坐標的標簽名:

print (df.axes)

  


 

三. DataFrame的切片

  iloc索引或切片(iloc中只能取整數值):

print df.iloc[1,:] #第1行,所有列
print df.iloc[:,[0,2]] #第0行,第0列和第2列
print df['one'].iloc[2] #列名索引+行號

  loc索引或切片(loc中可以取str):

print data.loc[0:1, ['one', three']] #

  篩選出dataframe中有某一個或某幾個字符串的列:

list=['key1','key2']
df = df[df['one'].isin(list)]

  篩選出dataframe中不含某一個或某幾個字符串的列,相當於反選

df = df[~df['one'].isin(list)]

  


 

四. 缺失值的處理

  缺失值可以刪除也可以用均值或者0等數填充:

df.fillna(df1.mean())
df.fillna(0)

 刪除缺失值時可以指定列:

df = df.dropna(subset=['one','two'])

  


 

五. 去重、刪除行或列

  去重需要在subset指定哪一列的值進行篩選,如果不選擇的話默認整行的值全部一樣才去掉

  first表示保留第一個出現的值所在行,last表示保留最后一個出現的重復值所在的行,false表示重復的行全部刪除

df=df.drop_duplicates(subset='one',keep='first')

  去除有NaN值的行或列(axis=0去除行,=1去除列):

df = df.dropna(axis=0)
df = df.dropna(axis=1)

  去除某一列:

df = df.drop(['one'],axis=1)

  去除含有某一個數的行:

row_list = df[df.one == 2].index.tolist() # 獲得含有該值的行的行號
df = df.drop(row_list)

  


 

 六. DataFrame的修改

  修改數據類型

df['one']=pd.DataFrame(df['one'],dtype=np.float)

  修改列名(需要寫上所有列名,包括需要修改的和不需要修改的):

df.columns = ['first','second','all']

  修改列名(只需寫上需要修改的列)

df.rename(columns = {'one':'first','two':'second'},inplace = True) #inplace=True表示修改df,若為False表示只返回一個修改后的數據

  重排序(by可以取多個列名,默認升序):

df = df.sort_values(by=['one'],ascending = True)
df = df.sort_index(axis = 0,ascending = True,by = 'one')
df = df.sort(columns = ['one'],axis = 0,ascending = True)

  修改數據

df.iloc[1,2] = 10

  用已有的列進行運算創建新的列

df['new_colume'] = df['one'] + df['two']

  


 

七. dataframe更改索引

  當刪除掉不需要的行時,行索引會變的不連續,這時候可以重新設計新的索引

df['index']=range(len(df['one']))
df.set_index('index')

  設置時間序列為索引

dd = pd.date_range(start='4/1/2018',periods=5)
#dd = pd.date_range('4/1/2018','4/5/2018')
df = df.set_index(dd)

  


 

 八. 添加新的行,將兩個dataframe連接到一起

  axis表示連接的方向,axis=0表示兩個dataframe的行數會增加,如果列名相同則直接共用列,如果列名不同會生成新的列;axis=1,表示會加上新的列

df=pd.concat([df,df],axis=0) # 連接后行數是以前的2倍,列數不變

   在dataframe添加新的行

df = df.append(df.loc[2,:],,ignore_index=True) 

  如果兩個dataframe的列名是一樣的,也可以用merge:

df = pd.merge(df,df)

  


 

九. DataFrame的輸出

  輸出為excel或者csv格式,csv文件里的數據被讀取時數據類型默認為object,excel則會保留原有的數據類型

df.to_excel('path/filename.xls')
df.to_csv('path/filename.csv')

  輸出為numpy的矩陣格式

matrix = df.ax_matrix()

  輸出為dict格式

dict = df.to_dict(orient="dict")

  


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM