Pandas数据分析1-了解数据、数据过滤与排序

了解数据

import pandas as pd
#读入数据
path1 = "E:/kaggle数据/exercise_data/chipotle.tsv"
df = pd.read_csv(path1, sep = '\t')
df.head(10)  #查看前10行
df.shape   #输出行数与列数
df.columns  #打印出列名
df.index    #查看索引

#按下单数降序,输出下单数最多的商品?
c = df[['item_name','quantity']].groupby(['item_name'],as_index = False).agg({'quantity':sum})   #分组求和
c.sort_values(['quantity'],ascending=False,inplace=True)  #排序输出
c.head()

groupby().agg()
df.groupby(‘name’).agg(‘mean’) ###分组后求和,求均值

sort_values()
pandas中的sort_values()函数原理类似于SQL中的order by,将数据集依照某个字段中的数据进行排序。
na_position=‘first’/‘last’ #设定缺失值的显示位置
#根据col1列中数值排序,按降序排列,并替换原数据,将该列空值放在首位
df.sort_values(by=[‘col1’],ascending=False,inplace=True, na_position=‘first’)
在这里插入图片描述

#在item_name这一列中,一共有多少种商品被下单?
df['item_name'].unique()   #输出去重后的值
df['item_name'].nunique()  #输出去重后的值个数  

.unique() 类似SQL里的distinct

#在choice_description中,下单次数最多的商品是什么?
df['choice_description'].value_counts().head()

value_counts( )函数
计算值的所在行数
value_counts常用于数据表的计数及排序,它可以用来查看数据表中,指定列里有多少个不同的数据值,并计算每个不同值有在该列中的个数,同时还能根据需要进行排序。

#下的单数总和?
total_items_orders = df['quantity'].sum()  #对数值列sum()求和 
total_items_orders

#将item_price转换为浮点数?原数值:$2.39 
dollarizer = lambda x:float(x[1:-1])    #定义函数
df['item_price'] = df['item_price'].apply(dollarizer)   #列.apply(函数名)

#在该数据集对应的时期内,收入(revenue)是多少?
df['sub_total'] = round(df['item_price']*df['quantity'],2) #新增一列
df['sub_total'].sum()  #对该列求和

#一共有多少订单?也就是order_id列的最大数
df['order_id'].nunique()

#每一单(order)对应的平均总价是多少?
df[['order_id','sub_total']].groupby(by=['order_id'] ).agg({'sub_total':'sum'})['sub_total'].mean()

#一共有多少种不同的商品被售出?
chipo['item_name'].nunique()

数据过滤与排序

import pandas as pd
#读入数据
path2 = "E:/kaggle数据/exercise_data/Euro2012_stats.csv"
df2 = pd.read_csv(path2)
df2  #查看数据
df2.Goals #查看Goals列

#有多少球队参与了2012欧洲杯?即行数
df2.shape[0]

df2.info() #列的详情

#将数据集中的列Team, Yellow Cards和Red Cards单独存为一个名叫discipline的数据框?
discipline = df2[['Team', 'Yellow Cards', 'Red Cards']] #双括号
discipline

#对数据框discipline按照先Red Cards降序再Yellow Cards降序进行排序?
discipline.sort_values(['Red Cards', 'Yellow Cards'],ascending=False)

#计算每个球队拿到的黄牌数的平均值?
round(discipline['Yellow Cards'].mean()) #round()默认保留一个小数

#找到进球数Goals超过6的球队数据?筛选出Goals>6的行
df2[df2['Goals']>6]

#选取Team列以字母G开头的球队数据?
df2[df2.Team.str.startswith('G')]

#选取前7列?
df2.iloc[:,0:7]
#选取除了最后3列之外的全部列?
df2.iloc[:,:-3]

#找到英格兰(England)、意大利(Italy)和俄罗斯(Russia)的射正率(Shooting Accuracy)?
#即找到team 中值是'England', 'Italy', 'Russia',的team与Shooting Accuracy的值
df2.loc[df2.Team.isin(['England', 'Italy', 'Russia']), ['Team','Shooting Accuracy']]

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值