当前位置: 首页 > news >正文

反馈网站制作/公司网络营销策划书

反馈网站制作,公司网络营销策划书,招商网站建设免费,厦门网站开发网络公司呆鸟云:“7 月 18 日,Pandas 团队推出了 Pandas 0.25 版,这就相当于 Python 3.8 啦,Python 数据分析师可别错过新版的好功能哦。”安装 0.25 版:pip install pandas,就可以了。下面和大家一起看看新版 pand…

a564bea6ea27fba86f4bbc2ccc122e69.png

呆鸟云:“7 月 18 日,Pandas 团队推出了 Pandas 0.25 版,这就相当于 Python 3.8 啦,Python 数据分析师可别错过新版的好功能哦。”
安装 0.25 版:pip install pandas,就可以了。下面和大家一起看看新版 pandas 都有哪些改变。

一、四个置顶的警告!

  1. 从 0.25 起,pandas 只支持 Python 3.53 及以上版本了,不再支持 Python 2.7,还在使用 Python 2 的朋友可要注意了,享受不了新功能了,不过,貌似用 Python 2 做数据分析这事儿估计已经绝迹了吧!
70f0719d1d8ea0fb33a37fd27629f921.png
  1. 下一版 pandas 将只支持 Python 3.6 及以上版本了,这是因为 f-strings 的缘故吗?嘿嘿。
4a82f1231ba65540fe66696a49f64696.png
  1. 彻底去掉了 Panel,N 维数据结构以后要用 xarray 了。说起来惭愧,呆鸟还没用过 Panel 呢,它怎么就走了。。。。
da8ebf714168bc59f07de28a2e8ada94.png
  1. read_pickle() 与 read_msgpack(),只向后兼容到 0.20.3。上一篇文章刚介绍过 read_pickle(),它就也要离我们而去了吗?-_-||
看完了这四大警告,咱们再看下 0.25 带来了哪些新东西。

二、新增功能

1. Groupby 的命名聚合(Named Aggregation)

这可是个新功能,能直接为指定的聚合输出列命名。先创建一个 DataFrame 示例。
animals = pd.DataFrame({'品种': ['猫', '狗', '猫', '狗'],                                                '身高': [9.1, 6.0, 9.5, 34.0],                                              '体重': [7.9, 7.5, 9.9, 198.0]})
animals
命名聚合示例,居然还支持中文诶!不过,这里是为了演示清晰才写的中文变量名,平时,该用英文还是要用英文的。
animals.groupby('品种').agg(
   最低=pd.NamedAgg(column='身高', aggfunc='min'),
   最高=pd.NamedAgg(column='身高', aggfunc='max'),
   平均体重=pd.NamedAgg(column='体重', aggfunc=np.mean),
)
这么写看起来还是有些繁琐,很不 Pythonic,好在 pandas 提供了更简单的写法,只需传递一个 Tuple 就可以了,Tuple 里的第一个元素是指定列,第二个元素是聚合函数,看看下面的代码,是不是少敲了好多下键盘:
animals.groupby('品种').agg(
   最低=('身高', min),
   最高=('身高', max),
   平均体重=('体重', np.mean),
)
这里还可以进一步偷懒,只写 min或 max,连单引号都不写了。
Pandas 提供了一种叫 pandas.NameAgg的命名元组(namedtuple),但如上面的代码所示,直接使用 Tuple 也没问题。这两段代码的效果是一样的,结果都如下图所示。984e30b62a40aa5947ac46686a2655ed.png命名聚合取代了已经废弃的 dict-of-dicts重命名方式,看了一下,之前的操作还真是挺复杂的,这里就不赘述了,有兴趣回顾的朋友,可以自己看下用 dict 重命名 groupby.agg() 输出结果(已废弃) 这部分内容。命名聚合还支持 Series 的 groupby 对象,因为 Series 无需指定列名,只要写清楚要应用的函数就可以了。
animals.groupby('品种').身高.agg(
   最低=min,
   最高=max,
)
e9ae2dba85e602d2966d817fde2998d9.png更多有关命名聚合的介绍,详见官方文档 Named aggregation。

2. Groupby 聚合支持多个 lambda 函数

0.25 版有一个黑科技,以 list 方式向 agg()函数传递多个 lambda 函数。为了减少键盘敲击量,真是无所不用其极啊!
animals.groupby('品种').身高.agg([        lambda x: x.iloc[0], lambda x: x.iloc[-1]
])
cc0d52156db5c3009d14928004a20b5c.png
animals.groupby('品种').agg([    lambda x: x.iloc[0] - x.iloc[1],    lambda x: x.iloc[0] + x.iloc[1]
])
55bbd1b9c5081ee7fc6ca21495456c5f.png0.25 版前,这样操作会触发 SpecificationErrorac1ab2eb298146ce644a835444d2dfe3.png触发 SpecificationError
这个功能也有个小遗憾,多 lambda 函数的输出没有像命名聚合那样可以自定义命名,还要后面手动修改,有些不方便,不知道是我没找到,还是真没有……

3. 优化了 MultiIndex 显示输出

MultiIndex输出的每行数据以 Tuple 显示,且垂直对齐,这样一来,MultiIndex的结构显示的更清晰了。
pd.MultiIndex.from_product([['a', 'abc'], range(500)])
b203d49c96ad98772f9ccad754369e4a.png之前,是这样的1b1f8f862c183d91eaf714822e01328c.png现在,是这样的真是货比货得扔,以前没感觉,现在一比较,有没有觉得大不相同呢?

4. 精简显示 Series 与 DataFrame

超过 60 行的 Series 与 DataFrame,pandas 会默认最多只显示 60 行(见 display.max_rows选项)。这种设置依然会占用大量垂直屏幕空间。因此,0.25 版引入了 display.min_rows选项,默认只显示 10 行:
  • 数据量小的 Series 与 DataFrame, 显示 max_row 行数据,默认为 60 行,前 30 行与后 30 行;
  • 数据量大的 Series 与 DataFrame,如果数据量超过 max_rows, 只显示 min_rows 行,默认为 10 行,即前 5 行与后 5 行。
最大与最小行数这种双重选项,允许在数据量较小时,比如数据量少于 60 行,显示全部数据,在数据量较大时,则只显示数据摘要。要去掉 min_rows的设置,可以把该选项设置为 Nonepd.options.display.min_rows = None
sales_date1 = pd.date_range('20190101', periods=1000, freq='D')
amount1 = np.arange(1000)
cols = ['销售金额']
sales1 = pd.DataFrame(amount1,index=sales_date1,columns=cols)
1de3eccb3d02745766a0ea20028d75be.pngmin_rows
在 VSCode 里显示正常,只显示了前 5 行与后 5 行,但貌似 Jupyter Notebook 6.0 目前貌似还不支持这个设置,还是显示前 30 行与后 30 行。图片太长,这里就不截图了。如果 Jupyter 可以的话,请告诉我。

5. json_normalize() 支持 max_level

json_normalize() 支持按层级(level)读取,增加了 max_level控制参数。
from pandas.io.json import json_normalize
data = [{        'CreatedBy': {'Name': 'User001'},       'Lookup': {'TextField': 'Some text',                   'UserField': {'Id': 'ID001', 'Name': 'Name001'}},       'Image': {'a': 'b'}
       }]
0.25 以前是这样的,所有层级都读取出来了:
json_normalize(data)
4dbb27af7ecfddbbb5ee4f7a8e11ecde.png0.25 以后是这样的,可以通过 max_level参数控制读取的 JSON 数据层级:
json_normalize(data, max_level=1)
a5cea0cbf112205edb2cae21fc54704b.png6. 增加 explode() 方法,把 list “炸”成行Series 与 DataFrame 增加了 explode() 方法,把 list 形式的值转换为单独的行。
df = pd.DataFrame([{'变量1': 'a,b,c', '变量2': 1},
                  {'变量1': 'd,e,f', '变量2': 2}])
df
28357fc9cacc2e3e27ced4f27493c285.png
df.assign(变量1=df.变量1.str.split(',')).explode('变量1')
e5440c917b210ec948aed3aca84792f6.png以后再拆分这样的数据就简单多了。具体官方文档说明详见 section on Exploding list-like column。

7. SparseDataFrame 被废弃了

0.25 以前专门有 SparseDataFrame(),生成稀疏矩阵,0.25 以后,这个函数被废弃了,改成 pd.DataFrame里的 pd.SparseArray()了,函数统一了,但是要多敲几下键盘了。0.25 以前是这样的:
pd.SparseDataFrame({"A": [0, 1]})
0.25 以后是这样的:
pd.DataFrame({"A": pd.SparseArray([0, 1])})
输出的结果都是一样的:fe53e17fdf85066c90409d3649cc1516.png

8. 对 DataFrame Groupby 后,Groupby.apply 对每组只处理一次

df = pd.DataFrame({"a": ["x", "y"], "b": [1, 2]})
dfdef func(group):
   print(group.name)    return group
df.groupby('a').apply(func)
有没有想到,0.25 以前输出的结果居然是这样的:2a830846870e1dc812b9eaa191f72de6.png0.25以前d69b0a0cff5a4949b6f8d619f356c3f6.png0.25以后这样才正常嘛~~!

9. 用 Dict 生成的 DataFrame,终于支持列排序啦

data = [
   {'姓 名': '张三', '城 市': '北京', '年 龄': 18},
   {'姓 名': '李四', '城 市': '上海', '年 龄': 19, '爱 好': '打游戏'},
   {'姓 名': '王五', '城 市': '广州', '年 龄': 20, '财务状况': '优'}
]
pd.DataFrame(data)
以前是乱序的,全凭 pandas 的喜好:e7c8ad68f7718b26906481c0f6226bac.png现在,我的字典终于我做主了!3c3c907b886145b08ddfa95b07a5e20b.png10. Query() 支持列名空格了用上面的 data生成一个示例 DataFrame,注意列名是有空格的。
df = pd.DataFrame(data)
现在用反引号(`)括住列名,就可以直接查询了:
df.query('`年 龄` <19')
44a9b5eb3cfb002a8c795a236b686c65.png好了,本文就先介绍 pandas 0.25 的这些改变,其实,0.25 还包括了很多优化,比如,对 DataFrame GroupBy 后 ffillbfill方法的调整,对类别型数据的 argsort的缺失值排序,groupby保留类别数据的数据类型等,如需了解,详见官方文档 What's new in 0.25.0。配套的 Jupyter Notebook 文件链接:https://github.com/jaystone776/pandas_answered/blob/master/10_New_Features_in_Pandas_0.25.ipynb。感谢阅读cc7e7851109cc0f402a151eb042f3d75.png

推荐阅读:

1:还在被垃圾分类困扰?代扔垃圾APP已上线!

2:年轻貌美的小姐姐加我微信后竟要求我帮她做这种事...

3:所有的不可描述都要从“我姐姐让我加你“的好友请求开始说起...

4:2018年Python爱好者社区历史文章合集(作者篇)

5:2018年终精心整理|Python爱好者社区历史文章合集(类型篇)

823f635e47a5ffd7b2e2eeb6143919ed.png

http://www.lbrq.cn/news/1373473.html

相关文章:

  • 用vs2010做网站导航/天津seo托管
  • 广告营销方式/seo优化按天扣费
  • 政府网站建设年度报告/百度网盘官网登录入口
  • iis 建网站手机访问/网络营销技巧培训班
  • 网站建设做的人多吗/广州疫情最新消息
  • wp企业网站模板/seo怎么优化软件
  • 红色餐饮网站源码/腾讯营销平台
  • 旅游网站建设色彩搭配表/和生活爱辽宁免费下载安装
  • 女人动漫做受网站/图片外链生成
  • 建域名做网站/湖南优化电商服务有限公司
  • 做设计那些网站可以卖设计/宁波seo优化公司排名
  • 南昌手机网站制作/自己个人怎样做电商
  • 做的最好的本地生活网站/泉州百度seo公司
  • 攻略类型网站如何做产品营销/seo优化网站优化排名
  • 网课培训班/关键词优化外包
  • 常见的网址有哪些/安徽seo优化规则
  • php做网站安性如何/网站优化检测
  • 郑州做旅游网站/绍兴seo推广
  • 网站建设服务案例/网站seo推广员招聘
  • 金融投资网站开发/南昌网站优化公司
  • 中山网站建设制作/济南网络优化哪家专业
  • 研磨材料 东莞网站建设/重庆seo网站管理
  • 简单的旅游网站怎么做/搜索排名怎么做
  • 企业网页制作软件/公众号排名优化软件
  • 做公众号的网站模板下载吗/广州网站优化外包
  • 湖北省建设厅七大员报名网站/百度快照官网
  • c2c商城网站建设费用/网络市场调研的方法
  • 精品网站制作公司/微信小程序官网
  • 给网站做视频怎么赚钱/网站优化排名服务
  • 公司请做网站/互联网运营推广公司
  • LangGraph认知篇-Command函数
  • ubuntu22.04离线一键安装gpu版docker
  • 关于echarts的性能优化考虑
  • opencv学习(单模块匹配)
  • 在 AKS 中运行 Azure DevOps 私有代理-1
  • 【Linux网络】netstat 的 -anptu 各个参数各自表示什么意思?