栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Pandas学习笔记

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Pandas学习笔记

目录
  • groupby相关操作
  • apply相关操作
  • plot相关操作
    • 1. 双轴图表

groupby相关操作

当list中含有np.nan时,如果用Counter去统计词频,就会巨慢。

apply相关操作

“Apply an function along an axis” 函数很好用了,就是沿着行或者列进行运算. DataFrame.apply(func, axis)
作者的思维习惯是:1. function work on columns row by row And 2. function work on index column by column。

重要参数列表如下:

  • func 定义的函数,函数应该与axis保持一致。
  • axis func的工作方向,值域为:
    0,‘index’ 表示func处理的是整列数据。
    1,‘columns’ 表示func处理的是整行的数据。
    默认值为0,是整列的操作。

但是整列整列的操作是在np.array上操作的,所以速度会优于行操作。

例子:

>>> df = pd.DataFrame({"name": ["小明", "小红"], "score": [80, 90]}, columns=["name", "score"])
>>> df
	name	score
0	小明	80
1	小红	90

>>> class Variance:
>>>     call_times_axis0 = 0
>>>     call_times_axis1 = 0
>>> def mama_axis0(x):
>>>     Variance.call_times_axis0 += 1
>>>     return x+"的妈妈"
>>> def mama_axis1(x):
>>>     Variance.call_times_axis1 += 1
>>>     return x["name"]+"的妈妈"
>>> print(Variance.call_times_axis0, Variance.call_times_axis1)
0 0
### 下面这几种情况结果是等价的
>>> df["妈妈0"] = df.name.apply(lambda x:x + "的妈妈")  # 整列的
>>> df["妈妈01"] = df.name.apply(mama_axis0)            # 整列的
>>> df["妈妈1"] = df.apply(lambda row: row["name"] + "的妈妈", axis='columns')  # 整行的
>>> df["妈妈11"] = df.apply(mama_axis1, axis=1)                                 # 整行的
>>> df["妈妈"] = df.name + "的妈妈" # 整列的操作,建立在np.array之上,速度是这几种方法中最快的。
>>> df
	name	score	妈妈0	妈妈01	妈妈1	妈妈11	妈妈
0	小明	80	小明的妈妈	小明的妈妈	小明的妈妈	小明的妈妈	小明的妈妈
1	小红	90	小红的妈妈	小红的妈妈	小红的妈妈	小红的妈妈	小红的妈妈

# 说明两种情况下,都是调用函数两次
>>> print(Variance.call_times_axis0, Variance.call_times_axis1)
2 2
plot相关操作

df.plot支持的一些图表如下:

1. 双轴图表

一个图表也就是一个Axes,即一些axis的集合。以柱状图为例,原本它只有x轴和y轴,现在要多出来一个y轴,且与之共用x轴。

df = pd.DataFrame({"x": [1,2,3], "y1": [1.1, 1.2, 1.3], "y2": [0.1, 0.2, 0.4]}, 
                  columns=['x', 'y1', 'y2'])

axes = df.plot.bar(x="x", y="y1", color="orange")
axes.set_ylabel("y1", color="orange")

axes1 = axes.twinx()
axes1 = df.y2.plot.line(ax=axes1, color="blue")
_ = axes1.set_ylabel("y2", color="blue")

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/857923.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号