python中pandas的运用,类别数量判断输出?

2020-09-17 10:30发布

[图]如图所示,希望能通过python中的pandas的功能来连续输出类似于这样的信息 某某店 某月某日 对外销售的品类数是 XX,对外销售的品牌总数是 XX ,我现在自己写了些代码,但没办法循环输出内容,...

如图所示,希望能通过python中的pandas的功能来连续输出类似于这样的信息“ 某某店 某月某日 对外销售的品类数是 XX,对外销售的品牌总数是 XX” ,我现在自己写了些代码,但没办法循环输出内容,只能选定固定的某店某日的品牌数 这种,但数据一旦多了就很繁琐,不知道各位有没有好的解决办法,谢谢


2条回答
卡卡
2楼 · 2020-09-18 10:17


  Pandas是基于NumPy的一种工具,支持大部分的Numpy语言风格的数组计算,尤其是数组函数以及没有for循环的各种数据处理。尽管Pandas采用了很多Numpy的代码风格,但最大的不同在于Pandas是用来处理表格型或异质型数据的,而Numpy更适合处理同质型的数值类数组数据。

  Pandas所包含的数据结构和数据处理工具的设计,使得数据清洗和分析非常快捷,并经常和其他Numpy、Scipy数值计算工具、数据可视化工具Matplotlib结合起来使用,其中大量库和一些标准的数据模型、函数和方法,支持着大型数据集的高效处理。

  Pandas常用的数据结构:Series和DataFrame。

importpandasaspd

frompandasimportSeries,DataFrame

一、Series

  Series是一种以为的数组型对象,它包含了一个值序列(与Numpy中的类型相似),并且包含了数据标签,成为索引(index)。Series可以运用ndarray或字典的几乎所有索引操作和函数,融合了字典和ndarray的优点。

1、Series创建索引序列

  (1)数组自动索引

importpandasaspd

importnumpyasnp

a=pd.Series([9,8,7,6])

a

Out[17]:

09

18

27

36

dtype:int64

  (2)自定义索引

importpandasaspd

importnumpyasnp

b=pd.Series([9,8,7,6],index=['a','b','c','d'])

b

Out[18]:

a9

b8

c7

d6

dtype:int64

  (3)固定值创建

importpandasaspd

importnumpyasnp

c=pd.Series(25,index=['a','b','c','d'])

c

Out[19]:

a25

b25

c25

d25

dtype:int64

  (4)从字典类型创建,键值对中的键是索引 

importpandasaspd

importnumpyasnp

d=pd.Series({'a':9,'b':8,'c':7,'d':6})

d

Out[20]:

a9

b8

c7

d6

dtype:int64



e=pd.Series({'a':9,'b':8,'c':7,'d':6},index=['a','b','c','d','e'])

e

Out[21]:

a9.0

b8.0

c7.0

d6.0

eNaN

dtype:float64

  (5) 从ndarray类型创建

importpandasaspd

importnumpyasnp

f=pd.Series(np.arange(5))

g=pd.Series(np.arange(5),index=np.arange(6,1,-1))

print(f)

print(g)


Out[22]:

00

11

22

33

44

dtype:int32

60

51

42

33

24

dtype:int32

注意:Series类型会自动生成默认索引,当自动索引和自定义索引并存,全当自定义索引。 

  

  2.Series常用属性

  (1)values和index获取Series对象的值和索引

importpandasaspd

importnumpyasnp

b=pd.Series([9,8,7,6],index=['a','b','c','d'])

b.index


Out[29]:Index(['a','b','c','d'],dtype='object')


b.values

Out[30]:array([9,8,7,6],dtype=int64)


b[1]

Out[31]:8


b['b']

Out[32]:8


b[['b','c','d',0]]

Out[33]:

b8.0

c7.0

d6.0

0NaN

dtype:float64

  (2)对象的值的name和索引index的name

importpandasaspd

importnumpyasnp

b=pd.Series([9,8,7,6],index=['a','b','c','d'])

b.name

b.name='Series对象'

b.index.name='索引列'

b


Out[35]:

索引列

a9

b8

c7

d6

Name:Series对象,dtype:int64

    (3)支持ndarry的属性,如dtype、shape、ndim、T等,就不一一举例了。下表从官方文档中拉取Series的Attribute,以便查询。 

Series.array支持此系列或索引的数据的ExtensionArray。Series.values返回系列为ndarray或ndarray-like取决于dtype。Series.dtype返回基础数据的dtype对象。Series.ftype如果数据稀疏则返回。Series.shape返回基础数据形状的元组。Series.nbytes返回基础数据中的字节数。Series.ndim根据定义1,基础数据的维数。Series.size返回基础数据中的元素数。Series.strides返回基础数据的步幅。Series.itemsize返回基础数据项的dtype大小。Series.base如果共享基础数据的内存,则返回基础对象。Series.T返回转置,根据定义自我。Series.memory_usage([index,deep])返回系列的内存使用情况。Series.hasnans如果我有任何nans,我会回来; 实现各种性能加速。Series.flags Series.empty判断Series是否为空,返回值为布尔类型Series.dtypes返回基础数据的dtype对象。Series.ftypes如果数据稀疏则返回。Series.data返回基础数据的数据指针。Series.is_copy退回副本。Series.name返回系列的名称。Series.put(*args,**kwargs)将put方法应用于其values属性(如果有

  3.Series转换函数

Series.astype(dtype[,copy,errors])将pandas对象转换为指定的dtype dtype。Series.infer_objects()尝试推断对象列的更好的dtypes。Series.convert_objects([convert_dates,...])(DEPRECATED)尝试推断对象列的更好dtype。Series.copy([deep])复制此对象的索引和数据。Series.bool()返回单个元素PandasObject的bool。Series.to_numpy([dtype,copy])NumPyndarray表示此系列或索引中的值。Series.to_period([freq,copy])将Series从DatetimeIndex转换为具有所需频率的PeriodIndex(如果未传递则从索引推断)。Series.to_timestamp([freq,how,copy])在期间开始时转换为时间戳的时间索引。Series.to_list()返回值列表。Series.get_values()与值相同(但处理稀疏转换),是一种展示。Series.__array__([dtype])将值作为NumPy数组返回。

  4.Series索引、迭代函数  

Series.get(ket[,default])从给定键的对象获取项目(DataFrame列,Panel切片等)。Series.at访问行/列标签对的单个值。Series.iat按整数位置访问行/列对的单个值。Series.loc按标签或布尔数组访问一组行和列。Series.iloc纯粹基于整数位置的索引,用于按位置选择。Series.__iter__()返回值的迭代器。Series.iteritems()懒惰地迭代(索引,值)元组。Series.items()懒惰地迭代(索引,值)元组。Series.keys()索引的别名。Series.pop(item)返回项目并从框架中删除。Series.item()将基础数据的第一个元素作为python标量返回。Series.xs(key[,axis,level,drop_level])返回Series/DataFrame的横截面。

  5. 二元运算符函数   

Series.add(other[,level,fill_value,axis])添加系列和其他元素(二元运算符添加)。Series.sub(other[,level,fill_value,axis])减去序列和其他元素(二元运算符子)。Series.mul(other[,level,fill_value,axis])系列和其他的乘法,元素(二元运算符mul)。Series.div(other[,level,fill_value,axis])浮动分裂系列和其他,元素方式(二元运算符truediv)。Series.truediv(other[,level,fill_value,axis])浮动分裂系列和其他,元素方式(二元运算符truediv)。Series.floordiv(other[,level,fill_value,axis])系列和其他的整数除法,元素方式(二元运算符floordiv)。Series.mod(other[,level,fill_value,axis])系列和其他的模数,元素方式(二元运算符mod)。Series.pow(other[,level,fill_value,axis])系列和其他元素的指数幂(二元运算符pow)。Series.radd(other[,level,fill_value,axis])添加系列和其他元素(二元运算符radd)。Series.rsub(other[,level,fill_value,axis])系列和其他元素的减法(二元运算符rsub)。Series.rmul(other[,level,fill_va

乔治与佩奇
3楼 · 2021-12-15 16:34

因为是数学专业,最开始深入学习的是MATLAB(下面简称M),感受最深的就是M的简单高效,高精度,不管什么东西,统统放到数组(或者说矩阵)里面,天哪噜,不可思议,和C语言、C++相比,这玩意就是个天生的数据实验室利器。后来用M做了个GUI,在编译成C风格的exe时花了大心血,才发现,原来这厮是个不折不扣的封闭症患者,和其他语言的友好指数基本为0。再后来涉及到版权问题,这才下定决心换个工具——Python。废话少说,快快进入正题,直接上源代码。

这里就先上两种数据类型的基本操作——增删改查。


相关问题推荐

  • 回答 3

    换行。比如,print hello\nworld效果就是helloworld\n就是一个换行符。\是转义的意思,'\n'是换行,'\t'是tab,'\\'是,\ 是在编写程序中句子太长百,人为换行后加上\但print出来是一整行。...

  • 回答 42

    十种常见排序算法一般分为以下几种:(1)非线性时间比较类排序:a. 交换类排序(快速排序、冒泡排序)b. 插入类排序(简单插入排序、希尔排序)c. 选择类排序(简单选择排序、堆排序)d. 归并排序(二路归并排序、多路归并排序)(2)线性时间非比较类排序:...

  • 回答 70
    已采纳

    前景很好,中国正在产业升级,工业机器人和人工智能方面都会是强烈的热点,而且正好是在3~5年以后的时间。难度,肯定高,要求你有创新的思维能力,高数中的微积分、数列等等必须得非常好,软件编程(基础的应用最广泛的语言:C/C++)必须得很好,微电子(数字电...

  • 回答 28

    迭代器与生成器的区别:(1)生成器:生成器本质上就是一个函数,它记住了上一次返回时在函数体中的位置。对生成器函数的第二次(或第n次)调用,跳转到函数上一次挂起的位置。而且记录了程序执行的上下文。生成器不仅记住了它的数据状态,生成器还记住了程序...

  • 回答 9

    python中title( )属于python中字符串函数,返回’标题化‘的字符串,就是单词的开头为大写,其余为小写

  • 回答 6

    第一种解释:代码中的cnt是count的简称,一种电脑计算机内部的数学函数的名字,在Excel办公软件中计算参数列表中的数字项的个数;在数据库( sq| server或者access )中可以用来统计符合条件的数据条数。函数COUNT在计数时,将把数值型的数字计算进去;但是...

  • 回答 1

    head是方法,所以需要取小括号,即dataset.head()显示的则是前5行。data[:, :-1]和data[:, -1]。另外,如果想通过位置取数据,请使用iloc,即dataset.iloc[:, :-1]和dataset.iloc[:, -1],前者表示的是取所有行,但不包括最后一列的数据,结果是个DataFrame。...

  • Python入门简单吗2021-09-23 13:21
    回答 45

    挺简单的,其实课程内容没有我们想象的那么难、像我之前同学,完全零基础,培训了半年,直接出来就工作了,人家还在北京大公司上班,一个月15k,实力老厉害了

  • 回答 4

    Python针对众多的类型,提供了众多的内建函数来处理(内建是相对于导入import来说的,后面学习到包package时,将会介绍),这些内建函数功用在于其往往可对多种类型对象进行类似的操作,即多种类型对象的共有的操作;如果某种操作只对特殊的某一类对象可行,Pyt...

  • 回答 8

     相当于 ... 这里不是注释

  • 回答 4

    还有FIXME

  • 回答 3

    python的两个库:xlrd和xlutils。 xlrd打开excel,但是打开的excel并不能直接写入数据,需要用xlutils主要是复制一份出来,实现后续的写入功能。

  • 回答 8

    单行注释:Python中的单行注释一般是以#开头的,#右边的文字都会被当做解释说明的内容,不会被当做执行的程序。为了保证代码的可读性,一般会在#后面加一两个空格然后在编写解释内容。示例:#  单行注释print(hello world)注释可以放在代码上面也可以放在代...

  • 回答 2

    主要是按行读取,然后就是写出判断逻辑来勘测行是否为注视行,空行,编码行其他的:import linecachefile=open('3_2.txt','r')linecount=len(file.readlines())linecache.getline('3_2.txt',linecount)这样做的过程中发现一个问题,...

  • 回答 4

    或许是里面有没被注释的代码

  • 回答 26

    自学的话要看个人情况,可以先在B站找一下视频看一下

没有解决我的问题,去提问