Pandas学习笔记

Pandas学习笔记,第1张

目录
  • 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")

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/868021.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-13
下一篇2022-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存