美文网首页
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