flash xml网站模板,wordpress综合检测工具,wordpress 登陆白屏,河南省住房建设厅网站3-python数据分析-pandas高级操作之替换、映射、随机抽样、分组、高级数据聚合、数据加载、透视表、交叉表替换操作 replace替换操作可以同步作用于Series和DataFrame中单值替换普通替换#xff1a; 替换所有符合要求的元素:to_replace15,value’e’按列指定单值替换#xff…3-python数据分析-pandas高级操作之替换、映射、随机抽样、分组、高级数据聚合、数据加载、透视表、交叉表替换操作 replace替换操作可以同步作用于Series和DataFrame中单值替换普通替换 替换所有符合要求的元素:to_replace15,value’e’按列指定单值替换 to_replace{列标签替换值} value’value’多值替换列表替换: to_replace[] value[]字典替换(推荐) to_replace{to_replace:value,to_replace:value}单值替换df DataFrame(datanp.random.randint(0,50,size(7,5)))#普通替换df.replace(to_replace7, valueseven)#按列指定单值替换df.replace(to_replace{0:7}, valueseven)多值替换#字典替换(推荐使用)df.replace(to_replace{7:seven,40:四十})#列表替换df.replace(to_replace[7,40],value[seven,四十])映射操作 mapmap是Series的方法只能被Series调用概念创建一个映射关系列表把values元素和一个特定的标签或者字符串绑定(给一个元素值提供不同的表现形式)创建一个df两列分别是姓名和薪资然后给其名字起对应的英文名dic {name:[jay,tom,jay],salary:[1000,2000,1000]}df DataFrame(datadic)#给jay和tom起两个中文名字#映射关系表表明了映射关系dic {jay:张三,tom:李四}df[c_name] df[name].map(dic)运算工具Series的方法apply也可以像map一样充当运算工具定义一个方法将它放到map或apply方法中,会将Series中每个元素传到函数中apply充当运算工具效率要远远高于map并且apply既可以用在Series也可以用在DataFrame超过300部分的钱缴纳50%的税计算每个人的税后薪资defafter_salary(s):if s 300:return s - (s-300) * 0.5returnsdf[after_salary] df[salary].map(after_salary)df[salary].apply(after_salary)0650.01 1150.02 650.0Name: salary, dtype: float64随机抽样 taketake() task中的axis参数含义和drop系列的函数一致np.random.permutation( n) 返回0到n-1之间的乱序序列df DataFrame(datanp.random.randint(0,100,size(100,3)),columns[A,B,C])np.random.permutation(3) #返回0-2之间的乱序序列array([2, 0, 1])#对原始数据进行打乱打乱是对索引打乱#对行列索引进行打乱并进行随机抽样抽取前10个df.take(indicesnp.random.permutation(3),axis1).take(indicesnp.random.permutation(100),axis0)[0:10]数据的分类处理 分组groupby数据分类处理的核心groupby()函数可以进行分组groups属性可以查看分组情况df DataFrame({item:[Apple,Banana,Orange,Banana,Orange,Apple],price:[4,3,3,2.5,4,2],color:[red,yellow,yellow,green,green,green],weight:[12,20,50,30,20,44]})#by 提供了分组条件通过水果的种类进行分组df.groupby(byitem)#查看分组结果df.groupby(byitem).groups{Apple: Int64Index([0, 5], dtypeint64),Banana: Int64Index([1, 3], dtypeint64),Orange: Int64Index([2, 4], dtypeint64)}分组聚合分组的目的就是为了后续对各个小组的聚合计算计算每一种水果的平均价格#计算每一种水果的平均价格df.groupby(item).mean()[price]#不推荐使用上面这种进行了多余计算浪费运算成本# 推荐使用下边这种df.groupby(byitem)[price].mean()itemApple3.00Banana2.75Orange3.50Name: price, dtype: float64将每一种水果的平均价格计算出来然后汇总到源数据中mean_price df.groupby(item).mean()[price]#直接将其转成字典mean_price_dic mean_price.to_dict(){Apple: 3.0, Banana: 2.75, Orange: 3.5}#通过映射映射到原数据df[mean_price] df[item].map(mean_price_dic)求出每一种颜色水果的平均重量将其汇总到源数据中#通过color分组计算平均重量并转成字典通过color映射汇总到原数据df[color_mean_weight] df[color].map(df.groupby(bycolor)[weight].mean().to_dict())高级数据聚合使用groupby分组后也可以使用transform和apply提供自定义函数实现更多的运算df.groupby(‘item’)[‘price’].sum() df.groupby(‘item’)[‘price’].apply(sum)transform和apply都会进行运算在transform或者apply中传入函数即可transform和apply也可以传入一个lambda表达式apply和transform的区别transform返回的结果是经过映射后的结果apply返回的是没有经过映射的结果#定义的方法需要作用到运算工具中def my_mean(s): #s是一组数据sum 0for i ins:sumireturn sum /len(s)#transform和apply就是运算工具#transform返回的是映射后的结果直接可以汇总到原数据df.groupby(byitem)[price].transform(my_mean)03.001 2.752 3.503 2.754 3.505 3.00Name: price, dtype: float64#apply返回的是没有映射的结果需要通过map映射才能汇总到原数据df.groupby(item)[price].apply(my_mean)itemApple3.00Banana2.75Orange3.50Name: price, dtype: float64数据加载读取type-.txt文件数据header 参数header默认是将数据第一行作为列索引指定None后使用隐式索引sep 参数sep指定数据通过什么分割pd.read_csv(./data/type-.txt)# 指定header等于None不使用第一行作列索引使用隐式索引pd.read_csv(./data/type-.txt, headerNone)# 指定sep通过-分割数据pd.read_csv(./data/type-.txt, headerNone, sep-)读取数据库中的数据#连接数据库获取连接对象importsqlite3conn sqlite3.connect(./data/weather_2012.sqlite)#读取库表中的数据值 参数(sql语句连接对象)pd.read_sql(select * from weather_2012, conn)#将数据写入数据库参数(表名连接对象)text_df.to_sql(text_df, conn)pd.read_sql(select * from text_df, conn)透视表 pivot_table透视表是一种可以对数据动态排布并且分类汇总的表格格式。在pandas中数据透视表被称作pivot_table。透视表的优点灵活性高可以随意定制你的分析计算要求脉络清晰易于理解数据操作性强报表神器pivot_table有四个最重要的参数index、values、columns、aggfunc数据读取#需要指定引擎和编码否则会报错乱码df pd.read_csv(./data/透视表-篮球赛.csv, enginepython, encodingutf-8)index参数分类汇总的分类条件每个pivot_table必须拥有一个index#想看看哈登对阵同一对手在不同主客场下的数据分类条件为对手和主客场df.pivot_table(index[对手,主客场])values参数对计算的数据进行筛选#如果我们只需要哈登在主客场和不同胜负情况下的得分、篮板与助攻三项数据df.pivot_table(index[主客场,胜负],values[得分,篮板,助攻])aggfunc参数设置对数据聚合时使用的函数当我们未设置aggfunc时它默认aggfunc’mean’计算均值#想获得哈登在主客场和不同胜负情况下的总得分、总篮板、总助攻时#将aggfunc参数设为sum就是对数据求和df.pivot_table(index[主客场,胜负],values[得分,篮板,助攻], aggfuncsum)columns参数设置列层次字段, 对values字段进行分类#获取所有队主客场的总得分df.pivot_table(index主客场,values得分, aggfuncsum)#查看主客场下的总得分的组成元素是谁df.pivot_table(index主客场, values得分, aggfuncsum, columns对手)#fill_value 将空值填充df.pivot_table(index主客场, values得分, aggfuncsum, columns对手fill_value0)交叉表 crosstab是一种用于计算分组的特殊透视图,对数据进行汇总pd.crosstab(index,colums)index:分组数据交叉表的行索引columns:交叉表的列索引df DataFrame({sex:[man,man,women,women,man,women,man,women,women],age:[15,23,25,17,35,57,24,31,22],smoke:[True,False,False,True,True,False,False,True,False],height:[168,179,181,166,173,178,188,190,160]})#求出各个性别抽烟的人数pd.crosstab(indexdf.smoke,columnsdf.sex)#求出各个年龄段抽烟人情况pd.crosstab(indexdf.age, columnsdf.smoke)