美文网首页
2024-01-17 烦人的pandas

2024-01-17 烦人的pandas

作者: 胜果铺子 | 来源:发表于2024-01-16 05:06 被阅读0次

pyodide

网页版的jupyter用的是pyodide。直接pip install openpyxl 会出错。必须这样:

import piplite
await piplite.install(['openpyxl', 'matplotlib'])

筛选

data23 = data.loc[data['班级'] == '1班']

datetime64转换为 timedelta

data23['用时'] = pd.to_timedelta(data23['用时'].astype(str))

为timedelta绘制直方图

要先转换为timedelta64[h]类型。h是小时,可以改成m分钟,s秒钟,以及ns等等。

data23.groupby('学号')['用时'].sum().astype('timedelta64[h]').plot.hist()

参考文献

[1]绘制timedelta
[2]日期转为时间delta


第二部分


两个条件的AND

原来条件自身要加括号,然后再用 & 连接。

df1 = df[(df.a != -1) & (df.b != -1)]

COUNT(DISTINCT aaaa)

用的是 .nunique() 方法

table.groupby('YEARMONTH').CLIENTCODE.nunique()

多级索引 MultiIndex

如果“行标签”(我用的是excel数据透视表的术语)是多级的。用tuple元组方式引用它。

df.loc[("bar", "two")]

条件筛选,然后设置某列为1个值

A列是条件用到的列,B是要设置值为np.nan的列

df.A==0 完成对行的筛选,'B'完成对要修改的列的筛选。仍然满足 .loc[行, 列] 这个顺序。

df.loc[df.A==0, 'B'] = np.nan

对序列的每个元素做类似 x = max(x, 150)

max只能用在标量、不能用在序列。需要用 .map 方法。

maxval = 202
tmp = pscj.map(lambda x: min(x, maxval))/maxval*100

时间段(timedelta)对象如何取其小时数?

从pandas版本1到版本2有一个变化

data23.groupby('学号')['用时'].sum().astype('timedelta64[ns]').dt.components
hours = data23.groupby('学号')['用时'].sum().astype('timedelta64[ns]').dt.seconds/3600
hours.hist()

相关文章

网友评论

      本文标题:2024-01-17 烦人的pandas

      本文链接:https://www.haomeiwen.com/subject/bnqkodtx.html