資源簡介 編程處理數據---pandas模塊處理數據導學案學習目標:了解Python常用擴展模塊的功能。掌握pandas模塊的調用方法、數據結構等基本知識。3、能使用pandas模塊對數據進行編輯、計算和統計分析,并能從中提取有用信息形成結論。4、掌握matplotlib模塊的調用方法和使用matplotlib模塊對數據進行可視化的基本方法。二、知識要點:pandas模塊(Series和DataFrame模塊)1.創建Series: pandas.Series(values[,index])values可以是字典或列表,當是字典時,索引為字典的索引;當是列表時,索引默認從0起遞增的整數,也可添加第二個參數index,指定索引。默認索引 import pandas as pd s=pd.Series([166,178,180]) print(s) 0 166 1 178 2 180 dtype: int64 指定索引 import pandas as pd s=pd.Series([166,178,180],['s1','s2','s3']) print(s) s1 166 s2 178 s3 180 dtype: int64常用對象屬性屬性 說明index Series的下標索引,其值默認是從0起遞增的整數values 存放Series值的一個數組2、DataFrame是一種二維的數據結構,由1個索引列(index)和若干個數據列組成,每個數據列可以是不同的類型創建二維數組例:創建DataFrame:①用一個相同長度的列表或字典創建pandas.DataFrame(data)相同長度的列表創建 import pandas as pd data=[['A','B','C'],[1,2,3]] s=pd.DataFrame(data) print(s) 運行結果: 0 1 2 0 A B C 1 1 2 3 字典創建 import pandas as pd data={'姓名':['王靜怡','張佳妮','李呈武'],'性別':['女','女','男'],'借閱次數':[28,56,37]} s=pd.DataFrame(data)//也可以再加columns調整數據列順序 print(s) 運行結果: 姓名 性別 借閱次數 0 王靜怡 女 28 1 張佳妮 女 56 2 李呈武 男 37③直接讀取二維數據文件創建DataFrame對象二維數據文件有:excel, csv文件等,可使用 read_excel( )函數, read_csv( )函數等例:讀取Excel文件 “test.xlsx”中的數據,創建DataFrame對象dfimport pandas as pddf=pd.read_excel(“test.xlsx’) #該文件使用的是相對路徑,所以excel文件要和python保存在同一目錄下print(df)DataFrame對象常用屬性屬性 說明index DataFrame的行索引columns 存放各列的列標題values 存放值的二維數據T 行列轉置(行變列,列變行)例:_for i in df.index:print(i)for i in df.columns:print(i)for i in df.values:print(i)print(df.T)DataFrame的索引(一)行索引:df.head( )默認前5行值和df.tail( )默認后5行值df.head( n ) 前n行的值,df.tail(n) 后n行的值df[n:m] 訪問行索引n至m-1行數據df[n:n+1]訪問行索引第n行數據df.values[n]:訪問行索引值是第n的數據例:import pandas as pddf=pd.read_excel(“test.xlsx’)print(df.head( )) #顯示表格中前5行的數據(二)列索引:df[‘列名’] 字典df.列名 屬性df[[‘列名’,’列名2’,’列名3’,…’列名n’]]例:print(df[‘姓名’])print(df.信息)print(df[['姓名','英語','生物']]) #多列值第n行第n列索引at[ ] 方法print(df.at[3, '姓名']) 顯示第4行的姓名值(三)布爾型數據選取滿足條件:df[ 條件表達式 ]條件表達式應由df[‘列標題名’] 和關系運算符組成的表達式組成例:print (df[df['語文']>108]) 或print(df[df.語文>108])多個條件篩選:print(df[(df.語文>100)&(df.數學>110)&(df.英語>100)])結果:(四)DataFrame對象中的行列的編輯:(1)列的操作:插入、刪除、重命名直接插入增加列可以直接通過標簽索引方式進行,當新增的列中的數值不一樣時,可以插入列表或者數組結構進行賦值from pandas import DataFramedata = {"name":("張三","李四","王五","趙六"),"sex":("男","女","女","男"), "aged":(20,19,20,21), "score":(80,60,70,90)}df = DataFrame(data) #使用字典創建DataFrame對象print(df)df["city"] = ["北京","西安","長春","珠海"]print(df)insert( )函數插入 (影響原始數據)insert(loc, column, value, allow_duplicates=False)loc:一個整數,表示第幾列 (默認第0列開始)column:表示列名value:該列的值,series.list均可allow_duplicates:列名是否可以重復,默認值是Falsedf.insert(2,'height',[178,165,167,180])print(df)刪除操作:drop( )和del操作drop(by,axis=0) #不影響原始數據by:標簽名axis:0行,1列例:df_delc=df.drop('city',axis=1)print(df_delc)運行結果:df_del=df.drop(1,axis=0)print(df_del)運行結果:name sex height height aged score city0 張三 男 178 186 20 80 北京2 王五 女 167 188 20 70 長春3 趙六 男 180 190 21 90 珠海del命令:永久刪除df對象中的列的數據del df[‘列名’]del df['city']print(df)重命名列操作:rename()函數 #不改變原序列格式:rename(columns={'原列名':'更改后列名'})例:df_ren=df.rename(columns={'name':'姓名'})print(df_ren)(2)行的操作:append( )追加數據行 # 不改變原序列例 :import pandas as pddf1=pd.DataFrame(`1`,columns=['a'])df2=pd.DataFrame(`2`,columns=['a'])df3=pd.DataFrame([3,4],columns=['a'])df4=df1.append(df2,ignore_index=True) #默認ignore_index=Falsedf=df4.append(df3)print(df)運行結果drop( )冊除行 #不改變原序列DataFrame對象中數據的統計與計算groupby( )函數:可以對DataFrame對象各列或各行的數據進行分組,然后對其中每一組數據進行不同的操作groupby(by,as_index=True)by 分類的列標簽,as_index:True表示以組標簽(列名)為索引,False不以組標簽為索引。例:import pandas as pddf=pd.read_excel('水果銷售.xlsx')print(df)g=df.groupby('地區',as_index=True)print(g.mean())g=df.groupby('采價點',as_index=True)print(g.mean())運行結果print(pdf.groupby('地區')['價格'].mean())DataFrame對象中數據的排序sort_index( )函數的使用:按索引排序sort_values( )函數的使用:按值排序sort_values(by,axis=0,ascending=True)by: 索引(根據選擇的是行還是列,填相應的標簽)axis:0表示行,表示列ascending:True升序,False降序例:df_sort=df.sort_values(‘價格’,ascending=False) #按價格值降序排序print(df_sort)運行結果:DataFrame常用函數函數 說明count() 返回非空(NaN)數據項的數量sum()、mean() 求和、求平均值,通過axis=0/1確定行列max()、min() 返回最大、最小值describe() 返回各列的基本描述統計值,包含計數、head(n)、tail(n) 返回DataFrame的錢n個、后n個數據記錄groupby() 對各列或各行中的數據進行分組,然后可對其中每一組數據進行不同的操作sort_values() 排序,axis=0/1確定行列drop() 刪除數據,通過axis=0/1確定行列,axis=0表示行,axis=1表示列append() 在指定元素的結尾插入內容(插入value,行),ignore_index=True時插入時不需要指定indexinsert() 在指定位置插入列rename() 修改列名或者索引concat() 合并DataFrame對象at[] 根據行標簽和列標簽這只單個值plot() 繪圖#以下演示均在df上操作 info=[[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]] columns=['a','b','c','d','e'] df=pd.DataFrame(info,columns=columns) print(df) 運行結果: a b c d e 0 1 2 3 4 5 1 6 7 8 9 10 2 11 12 13 14 15①count()count(axis=0,numeric_only=False)axis:0或‘索引‘表示行,1或’列‘表示列print(df.count(axis=0))print(df.count(axis=1))numeric_only:僅包含數字和布爾數據print(df.count()) 運行結果: a 3 b 3 c 3 d 3 e 3 print(df[‘a’].count()) 運行結果 3②sum()、mean()sum(axis=0)print(df.sum()) 運行結果 a 18 b 21 c 24 d 27 e 30 dtype: int64 print(df.mean()) 運行結果: a 6.0 b 7.0 c 8.0 d 9.0 e 10.0 dtype: float64 print(df.sum(axis=1)) 運行結果 0 15 1 40 2 65 dtype: int64③max()、min()max(axis=0),用法同sumprint(df.max()) 運行結果 a 18 b 21 c 24 d 27 e 30 dtype: int64④describe()print(df.describe()) 運行結果: a b c d e count 3.0 3.0 3.0 3.0 3.0 該列數據項數量 mean 6.0 7.0 8.0 9.0 10.0 該列平均值 std 5.0 5.0 5.0 5.0 5.0 該列標準差 min 1.0 2.0 3.0 4.0 5.0 該列最小值 25% 3.5 4.5 5.5 6.5 7.5 該列前25%的數據 50% 6.0 7.0 8.0 9.0 10.0 該列前50%的數據 75% 8.5 9.5 10.5 11.5 12.5 該列前75%的數據 max 11.0 12.0 13.0 14.0 15.0 該列前100%的數據matplotlibmatplotlib.pyplot中常用繪圖函數函數 說明figure() 創建一個新的圖表對象,并設置為當前繪圖對象 注:不創建figure對象,直接調用plot等繪圖函數進行繪圖,matplotlib會自動創建一個figure對象plot() 繪制線形圖bar() 繪制垂直柱狀圖barh() 繪制平行柱狀圖scatter() 繪制散點圖title() 設置圖表標題xlim()、ylim() 設置X、Y軸的取值范圍xlabel()、ylabel() 設置X、Y軸的標簽legend() 顯示圖例show() 顯示創建的所有繪圖對象①figure()figure(num=None,figsize=fiuguer.figsize)num:窗口的標識idfigsize:窗口的大小,如figsize=(8,4),即為長8英寸,寬4英寸②plot()常用參數plot([x],y[,color][,label][,linewidth])x:橫坐標數據y:縱坐標數據color:線的顏色label:線的標題linewidth:線寬③bar()常用參數參數 接收值 說明 默認值x array x軸 無height array 柱形圖的高度,也就是y軸的高度 無width 數值 柱形圖的寬度 0.8color string 柱形圖填充的顏色label string 解釋每個圖像代表的含義 Nonex=range(1,5) height=[10,7,5,8] plt.bar(x,height,width=0.6,color='b',label='test') plt.show()③barh()水平柱形圖參數 接收值 說明 默認值y array y軸 無width array 水平柱形圖的寬度,即為值 無height 數值 柱子的寬度 0.8color string 柱形圖填充的顏色label string 解釋每個圖像代表的含義 Noney=range(1,5) width=[10,7,5,8] plt.barh(y,width,height=0.6,color='b',label='aaaaaa') plt.show()④scatter()參數 接收值 說明x array x軸y array y軸color string 顏色label string 解釋每個圖像代表的含義x=range(1,5) y=[10,7,5,8] plt.scatter(x,y,color='b',label='test') plt.show()⑤title()title(label),將圖表標題設置為labelplt.title(‘test’)⑥xlim()、ylim()xlim(left,right),將x軸的范圍設置為[left,right]⑥xlabel()、ylabel ()xlabel(label)、ylabel(label)設置x軸標簽和y軸標簽⑦legend()顯示圖例標簽plt.legend()⑧show() 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫