zoukankan      html  css  js  c++  java
  • Pandas进阶修炼120题|当Pandas遇上NumPy

    ==================

    欢迎关注我的公众号:早起python

    =================

    大家好,本文接着更新Pandas进阶修炼120题,Pandas的强大不仅仅因为它自身的强大,更在于当它和NumPy、Matplotlib、Sklearn等库结合使用时发挥的巨大威力,本期就挑选了一些Pandas+NumPy相关的题目供各位读者练习,如果感兴趣,请一定要敲一遍代码。

    81数据查看

    题目:导入并查看pandas与numpy版本

    难度:⭐

    答案

    import pandas as pd
    import numpy as np
    print(np.__version__)
    print(pd.__version__)

    82数据创建

    题目:从NumPy数组创建DataFrame

    难度:⭐

    备注使用numpy生成20个0-100随机数

    答案

    tem = np.random.randint(1,100,20)
    df1 = pd.DataFrame(tem)

    83数据创建

    题目:从NumPy数组创建DataFrame

    难度:⭐

    备注使用numpy生成20个0-100固定步长的数答案

    tem = np.arange(0,100,5)
    df2 = pd.DataFrame(tem)

    84数据创建

    题目:从NumPy数组创建DataFrame

    难度:⭐

    备注使用numpy生成20个指定分布(如标准正态分布)的数

    答案

    tem = np.random.normal(0, 1, 20)
    df3 = pd.DataFrame(tem)

    85数据创建

    题目:将df1,df2,df3按照行合并为新DataFrame

    难度:⭐⭐

    答案

    df = pd.concat([df1,df2,df3],axis=0,ignore_index=True)

    86数据创建

    题目:将df1,df2,df3按照列合并为新DataFrame

    难度:⭐⭐

    期望结果

    0 1 2
    0 95 0 0.022492
    1 22 5 -1.209494
    2 3 10 0.876127
    3 21 15 -0.162149
    4 51 20 -0.815424
    5 30 25 -0.303792
    ...............

    答案

    df = pd.concat([df1,df2,df3],axis=1,ignore_index=True)
    df

    87数据查看

    题目:查看df所有数据的最小值、25%分位数、中位数、75%分位数、最大值

    难度:⭐⭐

    答案

    print(np.percentile(df, q=[0, 25, 50, 75, 100]))

    88数据修改

    题目:修改列名为col1,col2,col3

    难度:⭐

    答案

    df.columns = ['col1','col2','col3']

    89数据提取

    题目:提取第一列中不在第二列出现的数字

    难度:⭐⭐⭐

    答案

    df['col1'][~df['col1'].isin(df['col2'])]

    90数据提取

    题目:提取第一列和第二列出现频率最高的三个数字

    难度:⭐⭐⭐

    答案

    temp = df['col1'].append(df['col2'])
    temp.value_counts().index[:3]

    91数据提取

    题目:提取第一列中可以整除5的数字位置

    难度:⭐⭐⭐

    答案

    np.argwhere(df['col1'] % 5==0)

    92数据计算

    题目:计算第一列数字前一个与后一个的差值

    难度:⭐⭐

    答案

    df['col1'].diff().tolist()

    93数据处理

    题目:将col1,col2,clo3三列顺序颠倒

    难度:⭐⭐

    答案

    df.ix[:, ::-1]

    94数据提取

    题目:提取第一列位置在1,10,15的数字

    难度:⭐⭐

    答案

    df['col1'].take([1,10,15])

    95数据查找

    题目:查找第一列的局部最大值位置

    难度:⭐⭐⭐⭐

    备注即比它前一个与后一个数字的都大的数字

    答案

    tem = np.diff(np.sign(np.diff(df['col1'])))
    np.where(tem == -2)[0] + 1

    96数据计算

    题目:按行计算df的每一行均值

    难度:⭐⭐

    答案

    df[['col1','col2','col3']].mean(axis=1)

    97数据计算

    题目:对第二列计算移动平均值难度:⭐⭐⭐

    备注每次移动三个位置,不可以使用自定义函数

    答案

    np.convolve(df['col2'], np.ones(3)/3, mode='valid')

    98数据修改

    题目:将数据按照第三列值的大小升序排列

    难度:⭐⭐

    答案

    df.sort_values("col3",inplace=True)

    99数据修改

    题目:将第一列大于50的数字修改为'高'

    难度:⭐⭐

    答案

    df.col1[df['col1'] > 50]= '高'

    100数据计算

    题目:计算第一列与第二列之间的欧式距离

    难度:⭐⭐⭐

    备注不可以使用自定义函数

    答案

    np.linalg.norm(df['col1']-df['col2'])

    以上就是Pandas进阶修炼120题|第四期的全部内容,如果对某些题目有更好的解法欢迎给我留言,我会在完结之后整理出一份完整的120题并附上提供思路的读者。如果喜欢本系列请在看与转发,NumPy与爬虫可视化类似专题正在准备中,敬请期待!

  • 相关阅读:
    写代码注意了,打死都不要用 User 这个单词
    图解 Java 垃圾回收机制,写得非常好!
    Spring的核心模块解析
    单点登录终极方案之 CAS 应用及原理
    重磅!!Redis 6.0.0 已发布,有史以来改变最大的版本
    linux中$与()的一点使用疑惑解释
    mysql 行锁一则
    mysql: you can't specify target table 问题解决
    mysql update中需要根据条件列更新写法update case
    mysql depended_query 优化案例一则
  • 原文地址:https://www.cnblogs.com/liuzaoqi/p/12769579.html
Copyright © 2011-2022 走看看