资源简介 编程处理数据---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() 展开更多...... 收起↑ 资源预览