如下所示:
# -*-coding:utf-8-*-from pandas import DataFrameimport pandas as pdimport numpy as np""" 獲取行列數據"""df = DataFrame(np.random.rand(4, 5), columns=['A', 'B', 'C', 'D', 'E'])print dfprintdf['col_sum'] = df.apply(lambda x: x.sum(), axis=1) # 橫向求和,axis=1表示橫向df.loc['row_sum'] = df.apply(lambda x: x.sum()) # loc獲取一整列的數據,對一列數據進行求和print dfprintdd = pd.DataFrame(np.arange(0, 60, 2).reshape(10, 3), columns=list('abc'))# loc獲取一整列的數據print ddprintprint dd.loc[0:len(dd), 'a']printprint dd.loc[0:3, ['a', 'b']]printprint dd.loc[[1, 5], ['b', 'c']]print '--------------------------------------'# iloc獲取某個位置的元素,或者某個區域的元素print dd.iloc[1, 1]print dd.iloc[0:3, [0, 1]]print dd.iloc[[0, 3, 5], 0:2]print '--------------------------------------'""" 去重函數 drop_duplicates()"""from pandas import Series, DataFramedata = DataFrame({'k': [1, 1, 2, 2]})print dataprint type(data) # <class 'pandas.core.frame.DataFrame'>printisduplicates = data.duplicated() # duplicated()判斷是否是重復的項print isduplicatesprint type(isduplicates) # <class 'pandas.core.series.Series'>printdata = data.drop_duplicates() # drop_duplicates()移除重復的項print dataprint type(data) # <class 'pandas.core.frame.DataFrame'>print '-------------------------------------------------'""" Pandas.DataFrame 讀取、合并、修改列數據、新增列、分組、分組數據計算"""import numpy as npimport pandas as pdfrom pandas import Series, DataFramefrom datetime import timedelta, datetimefrom dateutil.parser import parse""" 讀寫csv文件"""# 讀取csv文件df = pd.read_csv('data_english.csv', encoding='gbk')# print dfprint type(df) # <class 'pandas.core.frame.DataFrame'>print df.columns # 所有列的標簽print df.index # 所有行的標簽print df.book_id # 選擇某一列,可以使用df.book_id ,也可以使用df['book_id']print type(df.book_id) # <class 'pandas.core.series.Series'>print np.array(df.book_id) # 將Series轉換為numpy的darray格式print '---------------------------------------------------------'# 寫入csv文件# df.to_csv('dat.csv', index=False, encoding='gbk') # index=False表示不把index寫入文件""" 行列的選取"""print df.read_name # 選擇一列print df[:3] # 選擇前3行print df.loc[:, ('read_num', 'read_name')] # df.loc[行標簽,列標簽]print df.iloc[2, 4] # df.iloc[行位置,列位置]print df.ix[2, 4] # df.ix[行位置或行標簽,列位置或列標簽]# bool判斷print df[df.read_name == u'山問萍'].head() # 獲取符合條件的行列print df[(df.read_name == u'山問萍') & (df.book == u'植物生理學實驗教程')] # 多個條件print '----------------------------------------------'""" 兩個df相merge"""# pd.concat([df1, df2]) # 兩個df的column都一樣,index不重復(增加列)# pd.concat([df1, df2], axis=1) # 兩個df的index都一樣,column不重復(增加行)""" 增加列,刪除列,重命名某一列"""# df['new_col'] = xxx # 直接增加一列,加到最后一列# df.insert[1, 'new_col'] # 使用df.insert 插入一列,可以設置這一列的位置# del df['one_col'] # 直接使用del進行刪除,刪除某一列# df = df.rename(columns={'old_name': 'new_name'}) # 重命名某一列# df = df.rename(columns={'old_name': 'new_name'}, inplace=True)# print '--------------------------------------------------------'""" apply(): 對dataframe的內容進行批量處理,比循環更快 map(), agg():對分組的結果再分別進行不同的操作"""""" 數據合并"""import numpy as npimport pandas as pddata1 = pd.DataFrame({'level': ['a', 'b', 'c', 'd'], 'number': [1, 3, 5, 7]})data2 = pd.DataFrame({'level': ['a', 'b', 'c', 'e'], 'number': [2, 3, 4, 5]})print data1print data2print pd.merge(data1, data2, on='level') # 合并,內連接data3 = pd.DataFrame({'level1': ['a', 'b', 'c', 'd'], 'number': [1, 3, 5, 7]})data4 = pd.DataFrame({'level2': ['a', 'b', 'c', 'e'], 'number': [2, 3, 4, 5]})print pd.merge(data3, data4, left_on='level1', right_on='level2')print pd.merge(data3, data4, left_on='level1', right_on='level2', how='left')print '----------------------------------------'""" merge參數說明: left和right:兩個不同的DataFrame how:合并的方式-->inner內連接,right右連接,left左連接,outer外連接,默認為inner on:用于連接的列索引名稱,必須存在于兩個DataFrame對象中 left_on: right_on: left_index: right_index: sort:默認為True,將合并的數據進行排序 suffixes:當列名相同時,合并后,自動添加后綴名稱,默認為(_x, _y) copy:默認為True,復制數據結構 indicator:"""""" 重疊數據合并"""data3 = pd.DataFrame({'level': ['a', 'b', 'c', 'd'], 'number1': [1, 3, 5, np.nan]})data4 = pd.DataFrame({'level': ['a', 'b', 'c', 'e'], 'number2': [2, np.nan, 4, 5]})print data3.combine_first(data4) # 相同標簽下的內容優先顯示data3的內容,如果某個數據缺失,就用另外一個數據補上""" 數據重塑和軸向旋轉 數據重塑:reshape() 軸向旋轉:unstack(),stack()"""data = pd.DataFrame(np.arange(12).reshape(3, 4), columns=['a', 'b', 'c', 'd'], index=['wang', 'li', 'zhang'])print dataprint data.unstack() # 軸向旋轉print '---------------------------------'""" 數據轉換"""data = pd.DataFrame({'a': [1, 3, 3, 4], 'b': [1, 3, 3, 5]})print dataprint data.duplicated() # 判斷是否重復行print data.drop_duplicates() # 去除重復行""" 替換值"""data = pd.DataFrame({'a': [1, 3, 3, 4], 'b': [1, 3, 3, 5]})print data.replace(1, 2) # 凡是數據1,全部替換成數據2print data.replace([1, 4], np.nan) # 凡是數據1,4,全部替換成np.nan""" 數據分段"""data = [11, 15, 18, 20, 25, 26, 27, 24]bins = [15, 20, 25]print dataprint pd.cut(data, bins)
新聞熱點
疑難解答