本文章是建議入門者直接上手操作,在操作中再去想為什么,是什么?
--理論知識暫時不寫了,可自行百度 ,跟着代碼來入門,簡單粗暴。
import pandas as pd import numpy as np from pandas import Series,DataFrame #數據結構:Series 和DataFrame #Series 是一個定長的字典序列 定長:相當於兩個ndarray #Series有兩個基本屬性:index和values index默認0,1,2...遞增 可以自定義索引如: index=['a','b'..] x1 = Series([1,2,3,4]) # print(x1) x2 = Series(data=[1,2,3,4],index=['a','b','c','d']) # print(x2) #也可用字典的方式來創建Series d = {'a':1,'b':2,'c':3,'d':4} x3 = Series(d) # print(x3) #DataFrame 類型數據結構-類似數據庫表——包含了行索引和列索引 data = {'chinese':[66,95,93,90,80],'English':[65,85,92,88,90],'Math':[30,98,96,77,90]} df1 = DataFrame(data) # print(df1) #設置行索引index 以及列索引columns df2 = DataFrame(data,index=['ZhangFei','GuanYu','ZhaoYun','HuangZhong','DianWei'],columns=['English','Math','chinese']) # print(df2) """ df1 結果 chinese English Math 0 66 65 30 1 95 85 98 2 93 92 96 3 90 88 77 4 80 90 90 df2結果 English Math chinese ZhangFei 65 30 66 GuanYu 85 98 95 ZhaoYun 92 96 93 HuangZhong 88 77 90 DianWei 90 90 80 """ #了解了基本的Series和DataFrame兩個數據結構后,我們從數據處理的流程來繼續學習使用方法 #數據的導入和輸出 #pandas允許直接從xlsx,csv文件中導入數據,也可輸出到xlsx,csv中 #xlsx excel文件自行准備 score = DataFrame(pd.read_excel('pandas_data.xlsx')) # score.to_excel('data1.xlsx') # df2.to_excel('data1.xlsx') #pip install openpyxl #pip install pandas # print(score) #數據清洗 # drop()刪除不需要的行或列 # df2 = df2.drop(index=['ZhangFei']) # df2 = df2.drop(columns=['chinese']) # print(df2) # rename重命名列名 columns, rename(columns=new_name,inplace=True) # df2.rename(columns={'chinese':'Yuwen','English':'Yingyu'},inplace=True) # print(df2) #去重復的值 drop_duplicates() 自動去重行 data1 = {'chinese':[66,66,95,93,90,80],'English':[65,65,85,92,88,90],'Math':[30,30,98,96,77,90]} df3 = DataFrame(data1,index=['ZhangFei','ZhangFei','GuanYu','ZhaoYun','HuangZhong','DianWei'],columns=['English','Math','chinese']) df3 = df3.drop_duplicates() # print(df3) #格式問題---更改數據格式--astype() #eg:將chinese字段值改成str或者int64類型 df3['chinese'].astype('str') # import numpy as np # df3['chinese'].astype(np.int64) # print(df3) #數據間的空格--先把格式轉換成str類型,strip函數去空格 map()映射 # df3['chinese']=df3['chinese'].map(str.strip) # #刪除左空格 # df3['chinese']=df3['chinese'].map(str.lstrip) # #右空格 # df3['chinese']=df3['chinese'].map(str.rstrip) # #特殊字符 # df3['chinese']=df3['chinese'].map(str.rstrip('$')) #大小寫轉換 #小 df3.columns=df3.columns.str.upper() #大 df3.columns=df3.columns.str.lower() #首字母大寫 df3.columns=df3.columns.str.title() # 查找空值 空值NAN isnull() df3.isnull() #對應字段 返回True或Flask #apply函數對數據進行清洗--使用頻率較高 #eg:大小寫轉化 # apply(str.upper) df4 = DataFrame(data={'name':'ZhangSan'},index=['1']) # print(df4) df4['name'] = df4['name'].apply(str.upper) # print(df4) #apply也可定義函數在apply中使用 apply(func) #數據統計 #如果有遇到控制NaN會自動排除 #min() max() sum() mean() 平均值 #median() 中位數 var()方差 std()標准差 #argmin()統計最小值的索引位置 argmax()統計最大值的索引位置 #idmin() 統計最小值的索引值 idxmax()統計最大值的索引值 ######統計函數千千萬,describe()函數最便捷 統計大禮包。。 df6 = DataFrame({'name':['ZhangFei', 'GuanYu', 'a', 'b', 'c'], 'data1':range(5)}) # print(df6.describe()) # print(df6) """ data1 count 5.000000 mean 2.000000 std 1.581139 min 0.000000 25% 1.000000 50% 2.000000 75% 3.000000 max 4.000000 """ #數據合並 #將多個渠道源的多個數據庫表進行合並, #一個DataFrame為一個數據表內容 兩個合並使用merge() df7 = DataFrame({'name':['Zhangfei','lisi','zhangsan,','a']}) df8 = DataFrame({'name':['Zhangfei','lisi','a,','a']}) #基於指定列進行連接---健的交集 # df9 = pd.merge(df7,df8,on='name') #inner內連接內鏈接是 merge 合並的默認情況,inner 內連接也為健交集 df9 = pd.merge(df7,df8,how='inner') # print(df9) #如何用SQL方式打開Pandas #可以直接使用sql語句來操作pandas from pandasql import sqldf,load_meat,load_births df10 = DataFrame({'name':['ZhangFei','GuanYu','a','b','c'],'data1':range(5)}) #將sql作為參數傳入匿名函數中 sql參數, 設置globals全局參數 pydf10 = lambda sql:sqldf(sql,globals()) sql = "select * from df10 where name='ZhangFei'" print(pydf10(sql)) """ Pandas中有Series和DataFrame兩種重要的數據結構。 Series:是一個定長的字典序列。有兩個基本屬性:index,values DataFrame:類似於數據庫表的一種數據結構。我們甚至可以像操作數據庫表那樣對DataFrame數據進行 連接,合並,查詢等等 常用DataFrame進行數據清晰:用到的發方法有: - describe() 統計性描述 - drop_duplicates() 刪除重復行 - rename(columns=...) 更名 - dropna() 刪除具有空的行 - isnull() 判斷空值 - fillna() 填充空值 - apply() 應用函數 - merge() 合並df - value_counts() 統計某列的各類型個數 - read_excel() to_excel() 讀取和保存excel - set_index() 設置索引 - cut 分組 """