文章目录
- DataFrame数据处理与分析
- 读取Excel文件中的数据
- 筛选符合特定条件的数据
- 查看数据特征和统计信息
- 按不同标准对数据排序
- 使用分组与聚合对员工业绩进行汇总
DataFrame数据处理与分析
部分数据如下
这个数据百度可以搜到,就是下面这个
读取Excel文件中的数据
import pandas as pd
pd.set_option('display.unicode.ambiguous_as_wide',True)
pd.set_option('display.unicode.east_asian_width',True)
df=pd.read_excel(r'C:\Users\dell\Desktop\超市营业额2.xlsx',usecols=['工号','姓名','时段','交易额'])
print(df[:10],end='\n\n')
df=pd.read_excel(r'C:\Users\dell\Desktop\超市营业额2.xlsx',skiprows=[1,3,5],index_col=1)
print(df[:10])
筛选符合特定条件的数据
df=pd.read_excel(r'C:\Users\dell\Desktop\超市营业额2.xlsx')
df[5:11]
df.iloc[5]
df.iloc[[3,5,10]]
df.iloc[[3,5,10],[0,1,4]]
df[['姓名','时段','交易额']][:5]
df[:10][['姓名','日期','柜台']]
df.loc[[3,5,10],['姓名','交易额']]
df.at[3,'姓名']'赵六'
print(df[df['交易额']>1700])
df['交易额'].sum()327257.0
df[df['时段']=='14:00-21:00']['交易额'].sum()151228.0
df[(df.姓名=='张三')&(df.时段=='14:00-21:00')]
df[df['柜台']=='日用品']['交易额'].sum()88162.0
df[df['姓名'].isin(['张三','李四'])]['交易额'].sum()116860.0
df[df['交易额'].between(800,850)]
查看数据特征和统计信息
df['交易额'].describe()
df['交易额'].quantile([0,0.25,0.5,0.75,1.0])
df['交易额'].median()1259.0
df.nsmallest(3,'交易额')
df.nlargest(3,'交易额')
df['日期'].max()Timestamp('2019-03-31 00:00:00')
df['工号'].min()1001
index=df['交易额'].idxmin()
print(index)
print(df.loc[index,'交易额'])76
53.0
index=df['交易额'].idxmax()
print(index)
print(df.loc[index,'交易额'])105
12100.0
按不同标准对数据排序
df.sort_values(by=['交易额','工号'],ascending=False)
df.sort_values(by=['交易额','工号'],ascending=[False,True])
df.sort_values(by='工号',na_position='last')
df.sort_values(by='姓名',ascending=True)
使用分组与聚合对员工业绩进行汇总
df.groupby(by=lambda num:num%5)['交易额'].sum()
df.groupby(by={7:'下标为7的行',35:'下标为35的行'})['交易额'].sum()
df.groupby(by='时段')['交易额'].sum()
某行数据有问题,但无伤大雅,重要的是方法
df.groupby(by='柜台')['交易额'].sum()
ddf=df.groupby(by='姓名')['日期'].count()
ddf.name='上班次数'
ddf
df.groupby(by='姓名')['交易额'].mean().round(2).sort_values()
df.groupby(by='姓名').sum()['交易额'].apply(int)
df.groupby(by='姓名')['交易额'].median()
dff=df.groupby(by='姓名').median()
dff['排名']=dff['交易额'].rank(ascending=False)
dff[['交易额','排名']]
df.groupby(by=['姓名','时段'])['交易额'].sum()
df.groupby(by=['姓名'])['时段','交易额'].aggregate({'交易额':['sum'],'时段':lambda x:'各时段累计'})
df.agg({'交易额':['sum','mean','min','max','median'],'日期':['min','max']})
df.groupby(by='姓名').agg(['max','min','mean','median'])[['工号','交易额']]