pandas在数据处理、数据分析和数据可视化方面有很多应用。本文将带您完成整个过程并开始使用。五一劳动节一定要劳动劳动。一、基本使用下面的代码在jupyter中运行,Python版本为3.6。首先importpandasimportpandasaspd#为了在jupyter中显示图表%matplotlibinline#从csv文件中读取数据,也可以从excel和json文件中读取数据#也可以通过sqldata=pd.read_csv('order_list.csv')#输出行数和列数data.shapeoutput:(1000,3)可以看到,变量数据是一个1000行3列的二维表。这种数据类型在pandas中称为DataFrame。#数据基本描述data.describe()data中有3列,good_id、good_cnt和order_id分别代表产品id、购买产品的数量和订单id。最左边是describe函数的统计指标,包括每列的个数、均值、标准差、最大值、最小值等。#预览数据,数量可以改变data.head(3)#获取第二行数据data.loc[2]output:good_id100042good_cnt1order_id10000002Name:2,dtype:int64#获取多行数据,数组元素代表行号data.loc[[1,2]]#获取商品id=100012的所有记录data[data['good_id']==100012]#获取商品id=100012且单笔销售额=6的所有记录data[(data['good_id']==100087)&(data['good_cnt']==6)]#获取订单号在[10000000,10000042]中的记录data[data['order_id'].isin([10000000,10000042])]#画出100012个产品,每个订单的销售量直方图数据[data['good_id']==100012]['good_cnt'].plot()#画出100012个产品,销量直方图数据[data['good_id']==100012]['good_cnt'].hist()#更新数据,将第1行的good_cnt列改为10data.loc[1,'good_cnt']=10data.head(3)#改为100012每笔交易商品订单销售额全部改为20data.loc[data['good_id']==100012,'good_cnt']=20data.head(3)2.中级usage#Countthenumberofoccurrencesofeachproduct#Namely:theorderofeachproduct次数data['good_id'].value_counts()output:100080????18100010????16100073????16100097????15100096????15??????????..100079?????5100077?????5100007?????4100037?????4100033?????4Name:?good_id,?Length:100,dtype:int64#取出商品销售量列表,该列表中每个值都添加1data['good_cnt'].map(lambdax:x+1)OUTPUT:0211112234410..99589969997699859999Name:Good_cnt,Length:1000,DTYPE:Int64,MAP不改变原数据中的数据,而是返回新的object#pairpairpairpairpairpairpairpairpairpairpairpairpaired为数据集的每一列调用给定的函数data.apply(len)。这里,对每一列执行len函数。当然,apply中的len函数也可以用自定义的lambda表达式代替。另外,如果想按行处理,可以在调用apply函数的时候加上axis=1参数。#对数据集中的所有元素调用给定的函数#同样不要改变原始数据集data.applymap(lambdax:x*100)#计算各列之间的相关系数data.corr()#绘制相关系数matrixpd.plotting.scatter_matrix(data,figsize=(12,8))以左小角为例,表示商品id(good_id)与订单id(order_id)的相关性。由于点比较分散,没有任何规律,可以解释两列在数据值上没有相关性,这也很好理解,因为它们本来就是不同的概念。相关系数矩阵一般在机器学习中用来观察不同特征之间的相关性。3.SQLjoin操作的高级用法#构造DateFrame,代表订单发生的城市order_city_df=pd.DataFrame(\dict(order_id=[10000000,10000001],\city=['上海','北京'])\)#实现joindata.merge(order_city_df,on=['order_id'])实现SQLgroupby操作#统计每个商品的总销售额data.groupby('good_id')['good_cnt'].sum().reset_index()遍历DataFrame中的每一行数据dictionary={}fori,rowindata.iterrows():dictionary[row['good_id']]=row['good_cnt']pandas的介绍就到这里了,希望可以可以帮你。想深入的可以参考pandas官方文档,中英文都有。另外,我们使用pandas在单机上进行处理。如果数据量比较大,单机运行会比较慢。这个时候,你可能会用到另外一个工具,叫做Dask。其接口兼容pandas,可与pandas转换,可运行在集群上,以分布式方式处理数据。以上就是本次分享的全部内容。觉得文章还不错的话,请关注公众号:Python编程学习圈,每日干货分享,发送“J”还能领取大量学习资料。或者去编程学习网了解更多编程技术知识。
