码迷,mamicode.com
首页 > 其他好文 > 详细

pandas_学习的时候总会忘了的知识点

时间:2020-05-07 20:15:20      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:sort   lambda   dup   ble   合并   行合并   sample   csv   asc   

对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(rC:\Users\lenovo\Desktop\总结\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(rC:\Users\lenovo\Desktop\总结\Python\超市营业额.xlsx,
                           skiprows = [1,2,4],
                           index_col = 1)
    skiprows 跳过的行
    index_col 指定的列

dataframe.iloc[[0,2,3],:]

# 查看第四行的姓名数据
dataframe.at[3,姓名]

2020-05-07

pandas_学习的时候总会忘了的知识点

标签:sort   lambda   dup   ble   合并   行合并   sample   csv   asc   

原文地址:https://www.cnblogs.com/hany-postq473111315/p/12844887.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!