zoukankan      html  css  js  c++  java
  • pandas_学习的时候总会忘了的知识点

    对Series 对象使用匿名函数
    使用 pipe 函数对 Series 对象使用 匿名函数
    pd.Series(range(5)).pipe(lambda x,y,z :(x**y)%z,2,5)
    
    pd.Series(range(5)).pipe(lambda x:x+3).pipe(lambda x:x*3)
    使用 apply 函数对 Series 对象使用 匿名函数
    pd.Series(range(5)).apply(lambda x:x+3)
    
    # 查看无偏标准差,使用 sem 函数
    pd.Series(range(0,5)).sem()
    
    # 按照日 进行分组查看交易的平均值 -1 表示倒数第一个
    # data.groupby(data.日期.str.__getitem__(-1)).mean().apply(round)
    
    # 查看日期尾数为 1 的数据
    # data[data.日期.str.endswith('1')][:12]
    
    # 查看日期尾数为 12 的交易数据,slice 为切片 (-2) 表示倒数两个
    # data[data.日期.str.slice(-2) == '12']
    
    # 查看日期中月份或天数包含 2  的交易数据
    # data[data.日期.str.slice(-5).str.contains('2')][1:9]
    
    # 对姓名和日期进行分组,并进行求和
    dff = dataframe.groupby(by = ['姓名','日期'],as_index = False).sum()
    
    # 使用 pivot 进行设置透视表
    # 将 dff 的索引,列 设置成透视表形式
    dff = dff.pivot(index = '姓名',columns = '日期',values = '交易额')
        index 设置行索引
        columns 设置列索引
        values 对应的值
    
    # 查看第一天的数据
    dff.iloc[:,:1]
    
    # 显示前两天每一天的交易总额以及每个人的交易金额
    dataframe.pivot_table(values = '交易额',index = '姓名',columns = '日期',aggfunc = 'sum',margins = True).iloc[:,:2]
    
    # 查看每个人每天购买的次数
    dataframe.pivot_table(values = '交易额',index = '姓名',columns = '日期',aggfunc = 'count',margins = True)
    
    # 每个人每天去过几次柜台,使用交叉表 crosstab
    pd.crosstab(dataframe.姓名,dataframe.柜台)
    
    # 每个人在每个柜台交易额的平均值,金额/天数
    pd.crosstab(dataframe.姓名,dataframe.柜台,dataframe.交易额,aggfunc = 'mean').apply(lambda  num:round(num,2) )
    
    # 对 5 的余数进行分组
    by 可以为匿名函数,字典,字符串
    dataframe.groupby(by = lambda num:num % 5)['交易额'].sum()
    dataframe.groupby(by = {7:'索引为7的行',15:'索引为15的行'})['交易额'].sum()
    dataframe.groupby(by = '时段')['交易额'].sum()
    
    # sort_values() 进行排序
    
    # 查看交易额对应的排名
    data['排名'] = data['交易额'].rank(ascending = False)
    
    # 每个人不同时段的交易额
    dataframe.groupby(by = ['姓名','时段'])['交易额'].sum()
    
    # 查看上浮了 50% 之后依旧低于 1500 的交易额,查看 4 条数据
    # 对 DataFrame 对象使用 map 匹配函数
    dataframe.loc[dataframe.交易额 < 1500,'交易额'] = dataframe[dataframe.交易额 < 1500]['交易额'].map(lambda num:num*1.5)
    
    # 丢弃缺失值之后的行数
    len(dataframe.dropna())
    
    # 包含缺失值的行
    dataframe[dataframe['交易额'].isnull()]
    
    # 使用整体均值的 80% 填充缺失值
    # dataframe.fillna({'交易额':round(dataframe['交易额'].mean() * 0.8)},inplace = True)
    # dataframe.iloc[[1,4,16],:]
    
    # 重复值
    dataframe[dataframe.duplicated()]
    
    # 丢弃重复行
    dataframe = dataframe.drop_duplicates()
    
    # 查看是否有录入错误的工号和姓名
    dff = dataframe[['工号','姓名']]
    dff.drop_duplicates()
    
    # 使用 diff 对数据进行差分
    # 查看员工业绩波动情况(每一天和昨天的数据作比较)
    dff = dataframe.groupby(by = '日期').sum()['交易额'].diff()
    
    # 使用交叉表得到每人在各柜台交易额的平均值
    data_group = pd.crosstab(data.姓名,data.柜台,data.交易额,aggfunc = 'mean').apply(round)
    
    # 使用 concat 连接两个相同结构的 DataFrame 对象
    df3 = pd.concat([df1,df2])
    
    # 合并 merge 、 join
    # 按照工号进行合并,随机查看 3 条数据
    # 合并 df4 和 df5 两个DataFrame 对象
    rows = np.random.randint(0,len(df5),3)
    pd.merge(df4,df5).iloc[rows,:]
    
    # 按照工号进行合并,指定其他同名列的后缀
    # on 对应索引列名 suffixes 区分两个连接的对象
    pd.merge(df1,df2,on = '工号',suffixes = ['_x','_y']).iloc[:,:]
    
    # 两个表都设置工号为索引 set_index,设置两个连接对象的索引
    df2.set_index('工号').join(df3.set_index('工号'),lsuffix = '_x',rsuffix = '_y').iloc[:]
    
    # 读取 csv 对象时使用 usecols
    # 读取工号姓名时段交易额,使用默认索引
    dataframe = pd.read_excel(r'C:UserslenovoDesktop总结Python超市营业额.xlsx',
                              usecols = ['工号','姓名','时段','交易额','柜台'])
    
    # 按照交易额降序和工号升序排序,查看五条数据
    dataframe.sort_values(by = ['交易额','工号'],ascending = [False,True])[:5]
    
    # 按工号升序排序
    dataframe.sort_values(by = ['工号'])[:5]
    
    # 三分钟重采样,计算均值
    data.resample('3H').mean()
    
    # 计算OHLC open,high,low,close
    data.resample('5H').ohlc()
    
    # 将日期替换为第二天
    data.index = data.index + pd.Timedelta('1D')
    
    # 查看指定日期的年份是否是闰年
    pd.Timestamp('20200301').is_leap_year
    
    # 查看所有的交易额信息
    dataframe['交易额'].describe()
    
    # 第一个最小交易额的行下标
    index = dataframe['交易额'].idxmin()
    
    # 最大交易额的行下标
    index = dataframe['交易额'].idxmax()
    dataframe.loc[index,'交易额']
    # 2000
    
    # 跳过 1 2 4 行,以第一列姓名为索引
    dataframe2 = pd.read_excel(r'C:UserslenovoDesktop总结Python超市营业额.xlsx',
                               skiprows = [1,2,4],
                               index_col = 1)
        skiprows 跳过的行
        index_col 指定的列
    
    dataframe.iloc[[0,2,3],:]
    
    # 查看第四行的姓名数据
    dataframe.at[3,'姓名']

    2020-05-07

  • 相关阅读:
    ubuntu16.04左边栏图标效果设置
    VMware虚拟机 Ubuntu 16.04 安装 VMware Tools
    微信换取openid的值
    thinkphp关于T方法
    Think关于循环的事
    base64格式转换为图片
    Think视图模型格式
    thinkphp里多表事务
    ThinkPHP数据库驱动之mysql事物回滚
    webhook是啥?
  • 原文地址:https://www.cnblogs.com/hany-postq473111315/p/12844887.html
Copyright © 2011-2022 走看看