推广

pandas

iseeyu2年前 (2024-02-21)推广145

image.png

1.series构造函数:

image.png

2.series属性和方法:

image.png

3.DataFrame构造函数

image.png

4.DataFrame属性和方法

image.png

5.pandas描述性统计

image.png

6.pandas函数应用

image.png

7.迭代

7.1 对象直接进行迭代
7.2 其他迭代

image.png

itertuples()方法将DataFrame中的每一行返回一个产生一个命名元组的迭代器。元组的第一个元素:是行的相应的索引值。而剩余的值是行值。

二.pandas实例

1.数据选择和赋值

1.排序

  • 按轴排序:df.sort_index(axis=1, ascending=False),表示:按照列索引值(axis=1),进行降序排列
  • 按值排序:df.sort_values(by=’B’)
    2.选择数据
    1)获取
  • 选择一列,产生一个‘Series’:df[‘A’] or df.A
  • 对行进行切片:df[0:3]
    2)按标签选择(loc)
  • 通过标签获取一行数据:df.loc[dates[0]]
  • 通过标签在多个轴上选择数据:df.loc[:, [‘A’, ‘B’]]
  • 通过标签同时在两个轴上切片:df.loc[‘20130102:20130104’, [‘A’, ‘B’]]
    3)按位置选择(iloc)
  • 通过传递整数的位置选择:df.iloc[3]
  • 通过整数切片:df.iloc[3:5, 0:2]. PS:最后一个不包括(左闭右开)
  • 通过传递整数列表按位置切片:df.iloc[[1,2,4], [0,2]]
  • 整行切片:df.iloc[1:3]
  • 整列切片:df.iloc[:, 1:3]
  • 获取某个具体值:df.iloc[1, 1]
  • 快速访标量:df.iat[1, 1]
    4)布尔索引
  • 使用单个列的值来选择数据:df[df.A > 0], 所有:df[]行索引, 行条件:df.A > 0
  • 从满足布尔条件的DataFrame中选择值:df[df > 0], 备注: < 0的值都变成了nan
  • 使用isin()过滤:df[df[‘E’].isin([‘two’, ‘four’])]
    5)赋值(at和iat)
  • 添加新列将自动根据索引对其数据:df[‘F’] = 1
  • 通过标签赋值:df.at[datas[0], ‘A’] = 0
  • 通过位置赋值:df.iat[0, 1] = 0
  • 使用Numpy数组赋值:df.loc[:, ‘D’] = np.array([5]*len(df))
  • 带where条件的赋值操作:df2[df2 > 0] = -df2

三.pandas数据处理

1.GroupBy:分组合并

image.png

1)过程和原理
GroupBy操作由三个阶段组成:

  • 分组:将数据分成多个组。分组标准:通常与索引或某一列具体元素有关
  • 用函数处理:用函数处理每一个分组,为每组数组生成一个单一的值
  • 合并:把来自每一组的结果汇集到一起,合并成一个新对象
    2)实例:用列元素,作为键进行分组
  • group=df[‘price1’].groupby(df[‘color’]), 得到的对象:GroupBy对象
    也可以写成:group=df.groupby(df[‘color’]).price1 or group = df.groupby(df[‘color’])[‘price1’]
    应该是:groupby的计算优先等级比较高
  • group.groups:查看分组情况
  • group.mean():对每个分组应用mean函数
  • group.sum():对每个分组应用sum函数
    3)等级分组:可以使用多列,多个键进行等级分组
  • group = df[‘price1’].groupby([df[‘color’], df[‘object’]]), 先按照color进行分组,然后再对每一组按照object进行分组
  • group.sum():最小分组,进行求和

2.merge():合并

把两个DF按照一定方式合并成一个DF

3.concat:拼接

1)concatenate()函数
numpy的concatenate()函数就是用于数组的拼接擦欧总
2)concat()函数
pandas库以及它的Series和DataFrame等数据结构实现了带编号的索引,Pandas的concat()函数实现了按索引拼接的功能
例子:

#默认axis=0
ser1 = pd.Series(np.random.rand(4), index=[1,2,3,4]), 
ser2 = pd.Series(np.random.rand(4), index=[5,6,7,8])
print(pd.concat([ser1, ser2]))

#按照axis=1
ser1 = pd.Series(np.random.rand(4), index=[1,2,3,4])
ser2 = pd.Series(np.random.rand(4), index=[5,6,7,8])
print(pd.concat([ser1, ser2], axis=1))

#内连接操作
ser1 = pd.Series(np.random.rand(4), index=[1,2,3,4])
ser2 = pd.Series(np.random.rand(4), index=[5,6,7,8])
df = pd.concat([ser1, ser2], axis=1)
print(df)
print('--------')
print(pd.concat([ser1, df], axis=1, join='inner'))

image.png

concat():默认按照axis=0这条轴进行拼接数据,并返回Series对象。如果指定axis=1, 返回的结果是DataFrame对象

image.png

concat():默认是外连结操作,把join选项设置为inner,可以执行内连接操作。

image.png

3)等级索引
假如我们想用于拼接的轴上创建等级索引,可以借助keys选项来完成,如下所示:

#axis=0方向,建立额外索引
import pandas as pd
import numpy as np

ser1 = pd.Series(np.random.rand(4), index=[1,2,3,4])
ser2 = pd.Series(np.random.rand(4), index=[5,6,7,8])
print(pd.concat([ser1, ser2], keys=[1,2]))

#axis=1方向,建立索引
ser1 = pd.Series(np.random.rand(4), index=[1,2,3,4])
ser2 = pd.Series(np.random.rand(4), index=[5,6,7,8])
print(pd.concat([ser1, ser2], axis=1,keys=[1,2]))

image.png

image.png

4)DataFrame对象的拼接

  • pd.concat([frame1, frame2])
  • pd.concat([frame1, frame2], axis=1)

4.删除数据:

  • drop():返回不包含已删除索引及其元素的新对象
  • del:删除数据列
  • drop_duplicateds():从DataFrame对象中删除所有重复的行,返回删除重复行后的DataFrame对象

1)删除Series对象数据

  • drop:ser.drop(‘yelow’) or ser.drop([‘blue’, ‘white’])
    2)删除DataFrame对象数据
  • 删除行:frame.drop([‘blue’, ‘yellow’])
  • 删除列:frame.drop([‘pen’, ‘pencil’], axis=1)。axis=1,表示跨列的方向,也就是横向的方向。找pen和pencil索引并删除
  • del:删除列的另一种方式 del frame[‘ball’]
  • 删除重复行:
    duplicated():函数可以用力啊检测重复的行,返回元素为bool的Series对象,每个元素对应一行。如果该行与前面行重复,则为True
    drop_duplicated():实现了删除功能,该函数返回删除重复行后的DataFrame对象

5.旋转数据

通常,按行或列调整元素并不总能满足目标,有时,需要按照行重新调整列或者按照列重新调整行的元素
1)DataFrame的转置

  • df.T
    2)按等级索引旋转
    前面讲过,DataFrame对象支持等级索引。利用这一点,可以还从i想你调整DataFrame对象中国呢数据,轴向旋转有两个基本操作:
  • 入栈(Stacking):旋转数据结构,把列旋转为行
  • 出栈(unStacking):把行旋转为列
import pandas as pd
import numpy as np
# df对象应用stack函数,会把列转变为行,从而得到一个Series对象
dframe = pd.DataFrame(np.arange(9).reshape(3,3),
                      index=['white', 'black', 'red'],
                      columns=['ball', 'pen', 'pencil'])
print(dframe)
print('------------')
print(dframe.stack())

#在这个具有登记索引结构的Series对象上执行unstack()操作,可以重建之前的DataFrame对象,从而可以以数据透视表的形式来展示Series对象中的等级索引结构
dframe = pd.DataFrame(np.arange(9).reshape(3,3),
                      index=['white', 'black', 'red'],
                      columns=['ball', 'pen', 'pencil'])
ser = dframe.stack()
print(ser.unstack())

#出栈可以应用不同的层级,为unstack()函数传入表示层级的编号或名称,即可对相应的层级进行操作。
ser = dframe.stack()
print(ser.unstack(0))
print('------------')
print(ser.unstack(1))

image.png

image.png

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/57562.html

相关文章

关键词密度在网站优化中需要客观对待。

关键词密度在网站优化中需要客观对待。

做SEO的基本上都在使用站长工具,站长工具一般都可以查询网站的关键词密度,一般密度在2%-8%,这个到底是不是衡量一个网站关键词密度的标准呢?甚至在以前的优化中还有很多的SEO前辈常把关键词的密度定义在2-8%、3-7%、低于10%、5%左右。事实上,关键词的密度只是一个模糊的概念并非绝对。...

网站优化:怎么样做外链才能提升网站权重。

网站优化:怎么样做外链才能提升网站权重。

友情链接的交换在网站SEO优化中占有很重要的一环,因为外链不仅能给你的站点增加权重和信任度,还可以增加收录的网站,提高网站排名,增加站点显示的数量,让更多的用户访问你的站点,带来站点流量。 由于外链是如此重要,我们必须建立一个良好的交换原则。就必须知道搜索引擎评价友链的标准。接下来我们来谈谈搜索引...

Brand Finance:2022年航空公司50强。

Brand Finance:2022年航空公司50强。

BrandFinance发布了"2022年航空公司50强"。在新冠大流行的广泛破坏之后,世界各地的航空公司品牌正在恢复。在大流行期间,由于政府实施旅行限制以减少新冠的迅速传播,航空业的品牌价值遭受了巨大损失。目前尽管许多航空公司品牌再次增长,但尚未恢复到大流行前的水平。 达美航空以 73 亿美元的...

京东新百货举办中式家具行业峰会 探索全渠道升级等解决方案

京东新百货举办中式家具行业峰会 探索全渠道升级等解决方案

9月23日,京东第二届中式家具行业峰会暨京东中式家具服务体系发布会在广东省中山市大涌镇东成红木体验馆举行。会上,京东新百货中式家具洞察行业的趋势变化,从经营模式、流量趋势、用户需求三个方面提出系统性解决方案,并深度聚焦用户消费体验的提升,发布了以材质验真为核心的中式家具服务...

郑州地铁5号线失联乘客邹德强确认遇难

郑州地铁5号线失联乘客邹德强确认遇难

极目新闻记者 刘琴近日,寻找郑州地铁5号线失联乘客邹德强引发网友持续关注。7月26日下午,极目新闻记者获悉,经DNA比对,邹德强确认遇难,他的遗体于25日凌晨在地铁隧道内被发现。7月25日凌晨,搜救人员在地铁隧道内发现遇难者遗体的消息迅速传到失联乘客邹德强和沙涛家属处。邹德...

如何理解用户增长,送你4个案列!

如何理解用户增长,送你4个案列!

春节期间读完了黄天文的《引爆 用户增长》、周喆吾-Max分享的他在Uber和 摩拜的用户增长实战经验,去掉煽情部分,砍掉铺垫和转折,捎上有关增长的那些事及 案例,给大家捞捞 干货。 1.增长是移动互联网下半场的主题 增长(Growth)是企业永恒的使命,耐克创始人曾经说...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片