Python Pandas數(shù)據(jù)分析工具用法實(shí)例
1、介紹
Pandas是基于Numpy的專(zhuān)業(yè)數(shù)據(jù)分析工具,可以靈活高效的處理各種數(shù)據(jù)集,也是我們后期分析案例的神器。它提供了兩種類(lèi)型的數(shù)據(jù)結(jié)構(gòu),分別是DataFrame和Series,我們可以簡(jiǎn)單粗暴的把DataFrame理解為Excel里面的一張表,而Series就是表中的某一列
2、創(chuàng)建DataFrame
# -*- encoding=utf-8 -*-import pandasif __name__ == ’__main__’: pass test_stu = pandas.DataFrame( {’高數(shù)’: [66, 77, 88, 99, 85], ’大物’: [88, 77, 85, 78, 65], ’英語(yǔ)’: [99, 84, 87, 56, 75]}, ) print(test_stu) stu = pandas.DataFrame( {’高數(shù)’: [66, 77, 88, 99, 85], ’大物’: [88, 77, 85, 78, 65], ’英語(yǔ)’: [99, 84, 87, 56, 75]}, index=[’小紅’, ’小李’, ’小白’, ’小黑’, ’小青’] # 指定index索引 ) print(stu)
運(yùn)行
高數(shù) 大物 英語(yǔ)0 66 88 991 77 77 842 88 85 873 99 78 564 85 65 75 高數(shù) 大物 英語(yǔ)小紅 66 88 99小李 77 77 84小白 88 85 87小黑 99 78 56小青 85 65 75
3、讀取CSV或Excel(.xlsx)進(jìn)行簡(jiǎn)單操作(增刪改查)
data.csv
# -*- encoding=utf-8 -*-import pandasif __name__ == ’__main__’: pass data = pandas.read_csv(’data.csv’, engine=’python’) # 使用python分析引擎讀取csv文件 print(data.head(5)) # 顯示前5行, print(data.tail(5)) # 顯示后5行 print(data) # 顯示所有數(shù)據(jù) print(data[’height’]) # 顯示height列 print(data[[’height’, ’weight’]]) # 顯示height和weight列 data.to_csv(’write.csv’) # 保存到csv文件 data.to_excel(’write.xlsx’) # 保存到xlsx文件 data.info() # 查看數(shù)據(jù)信息(總行數(shù),有無(wú)空缺數(shù)據(jù),類(lèi)型) print(data.describe()) # (count非空值,mean均值、std標(biāo)準(zhǔn)差、min最小值、max最大值25%50%75%分位數(shù)。) data[’新增列’] = range(0, len(data)) # 類(lèi)似字典直接添加即可 print(data) new_data = data.drop(’新增列’, axis=1, inplace=False) # 刪除列,如果inplace為T(mén)rue則在源數(shù)據(jù)刪除,返回None,否則返回新數(shù)據(jù),不改動(dòng)源數(shù)據(jù) print(new_data) data[’體重+身高’] = data[’height’] + data[’weight’] print(data) data[’remark’] = data[’remark’].str.replace(’to’, ’’) # 操作字符串 print(data[’remark’]) data[’birth’] = pandas.to_datetime(data[’birth’]) # 轉(zhuǎn)為日期類(lèi)型 print(data[’birth’])
4、根據(jù)條件進(jìn)行篩選,截取
# -*- encoding=utf-8 -*-import pandasif __name__ == ’__main__’: pass data = pandas.read_csv(’data.csv’, engine=’python’) # 使用python分析引擎讀取csv文件 a = data.iloc[:12, ] # 截取0-12行,列全截 # print(a) b = data.iloc[:, [1, 3]] # 行全截,列1,3 # print(b) c = data.iloc[0:12, 0:4] # 截取行0-12,列0-4 # print(c) d = data[’sex’] == 1 # 查看性別為1(男)的 # print(d) f = data.loc[data[’sex’] == 1, :] # 查看性別為1(男)的 # print(f) g = data.loc[:, [’weight’, ’height’]] # 選取身高體重 # print(g) h = data.loc[data[’height’].isin([166, 175]), :] # 選取身高166,175的數(shù)據(jù) # print(h) h1 = data.loc[data[’height’].isin([166, 175]), [’weight’, ’height’]] # 選取身高166,175的數(shù)據(jù) # print(h1) i = data[’height’].mean() # 均值 j = data[’height’].std() # 方差 k = data[’height’].median() # 中位數(shù) l = data[’height’].min() # 最小值 m = data[’height’].max() # 最大值 # print(i) # print(j) # print(k) # print(l) # print(m) n = data.loc[ (data[’height’] > data[’height’].mean()) & (data[’weight’] > data[’weight’].mean()), :] # 身高大于身高均值,且體重大于體重均值,不能用and要用&如果是或用| print(n)
5、清Nan數(shù)據(jù),去重,分組,合并
# -*- encoding=utf-8 -*-import pandasif __name__ == ’__main__’: pass sheet1 = pandas.read_excel(’data.xlsx’, sheet_name=’Sheet1’) # 讀取sheet1 # print(sheet1) # print(’-------------------------’) sheet2 = pandas.read_excel(’data.xlsx’, sheet_name=’Sheet2’) # 讀取sheet2 # print(sheet2) # print(’-------------------------’) a = pandas.concat([sheet1, sheet2]) # 合并 # print(a) # print(’-------------------------’) b = a.dropna() # 刪除空數(shù)據(jù)nan,有nan的就刪除 # print(b) # print(’-------------------------’) b1 = a.dropna(subset=[’weight’]) # 刪除指定列的空數(shù)據(jù)nan # print(b1) # print(’-------------------------’) c = b.drop_duplicates() # 刪除重復(fù)數(shù)據(jù) # print(c) # print(’-------------------------’) d = b.drop_duplicates(subset=[’weight’]) # 刪除指定列的重復(fù)數(shù)據(jù) # print(d) # print(’-------------------------’) e = b.drop_duplicates(subset=[’weight’], keep=’last’) # 刪除指定列的重復(fù)數(shù)據(jù),保存最后一個(gè)相同數(shù)據(jù) # print(e) # print(’-------------------------’) f = a.sort_values([’weight’], ascending=False) # 從大到小排序weight # print(f) g = c.groupby([’sex’]).sum() # 根據(jù)sex分組,再求和 # print(g) g1 = c.groupby([’sex’], as_index=False).sum() # 根據(jù)sex分組,再求和,但sex不作為索引 # print(g1) g2 = c.groupby([’sex’, ’weight’]).sum() # 根據(jù)sex分組后再根據(jù)weight分組,再求和 # print(g2) h = pandas.cut(c[’weight’], bins=[80, 90, 100, 150, 200], ) # 根據(jù)區(qū)間分割體重 print(h) # print(’-------------------------’) c[’根據(jù)體重分割’] = h # 會(huì)有警告,未解決,但不影響結(jié)果 print(c)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. ASP中常用的22個(gè)FSO文件操作函數(shù)整理2. 無(wú)線標(biāo)記語(yǔ)言(WML)基礎(chǔ)之WMLScript 基礎(chǔ)第1/2頁(yè)3. ASP調(diào)用WebService轉(zhuǎn)化成JSON數(shù)據(jù),附j(luò)son.min.asp4. .Net core 的熱插拔機(jī)制的深入探索及卸載問(wèn)題求救指南5. SharePoint Server 2019新特性介紹6. html清除浮動(dòng)的6種方法示例7. 讀大數(shù)據(jù)量的XML文件的讀取問(wèn)題8. ASP.NET Core 5.0中的Host.CreateDefaultBuilder執(zhí)行過(guò)程解析9. React+umi+typeScript創(chuàng)建項(xiàng)目的過(guò)程10. Vue+elementUI下拉框自定義顏色選擇器方式
