pandas练习笔记1-----了解你的数据,Pandas,开始


参考脚本及数据来源于:https://www.kesci.com/home/project/59e77a636d213335f38daec2
脚本均在jupyter notebook中运行。
1. 导库

import pandas as pd

2. 导入数据

chipo = pd.read_csv(r'C:\pandas\pandas_exercise\exercise_data\chipotle.csv')

脚本中使用的操作符"r" 是使计算机按字面意思理解"r"后面的字符串,所以此处" \ "并不是转义字符。

3. 查看前五行内容

chipo.head(6)

前五行的结果:
在这里插入图片描述

4. 查看数据有多少列

chipo.shape # (4622, 5)

查看列数:

chipo.shape[1] # 5

5. 打印所有的列名称

chipo.columns # Index(['order_id', 'quantity', 'item_name', 'choice_description','item_price'], dtype='object')

6. 查看数据集的索引

chipo.index # RangeIndex(start=0, stop=4622, step=1)

从零开始,到4622终止,应该是从第0行至第4621行含有数据集。

7. 找下单最多的商品

c = chipo[['item_name','quantity']].groupby(['item_name']).agg({'quantity':sum})

groupby函数在这里是将数按照item_name进行分组,然后计算每个item_name的quantity的总和,最后用agg函数将每个item_name和sum(quantity)组成的多个DataFrame进行组合。

c = chipo[['item_name','quantity']].groupby(['item_name'],as_index=False)
c = c['quantity'].agg(sum)

goupby函数详细信息参考:https://www.tutorialspoint.com/python_pandas/python_pandas_groupby.htm
此外,变量as_index默认是True,表示不显示索引项。
接着:

c.sort_values(['quantity'],ascending=False,inplace=True)
c.head()

sort_values函数是根据指定的行进行排列,用法如下:
DataFrame.sort_values(by=‘##’,axis=0,ascending=True, inplace=False, na_position=‘last’)
在这个脚本中,是根据’quantity’列,以降序进行排列,并且排序后的数据集代替原来的数据集。
结果:
在这里插入图片描述

8. 在item_name列中有多少种商品被下单

chipo['item_name'].nunique() # 50

unnique函数是返回某一列不重复项的个数,该脚本表示item_name中有50个不同的商品。

9.下单最多的商品是什么

chipo['choice_description'].value_counts().head()

value_count函数是计算指定列中有哪些不同的值,并计算每个值有多少重复值,默认从高到低排序。
结果:
在这里插入图片描述
10. 一共有多少下单了多少商品

total_items_orders = chipo['quantity'].sum()
total_items_orders  # 4972

11. 将item_price转化成浮点数

dollarizer = lambda x: float(x)
chipo['item_price'] = chipo['item_price'].apply(dollarizer)
print(chipo[['item_price']].head())

lambda函数是定义匿名函数,此句脚本是指将x转化成浮点数。
apply函数用法:DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds),apply函数会遍历每一行数据,然后将最终的结果组合成Series结构返回。
结果:
在这里插入图片描述

12. 求总收入是多少

chipo['sub_total'] = round(chipo['item_price'] * chipo['quantity'],2)
chipo['sub_total'].sum()  # 39237.02

round()函数是将浮点数四舍五入并返回该值,用法如下:
round(x, n),即n为保留的小数点后的个数。
并且该脚本将’sub_total’这一列添加到了数据集中。

13. 计算一共有多少订单

chipo['order_id'].nunique() # 1834

14. 每一单对应的平均总价

chipo[['order_id','sub_total']].groupby(by=['order_id']).agg({'sub_total':'sum'})['sub_total'].mean() # 21.394231188658654

该句脚本可以换成:

y = chipo[['order_id','sub_total']].groupby(by=['order_id']).agg({'sub_total':'sum'})
x = y['sub_total'].mean() 
print(x) # 21.394231188658654

15. 计算一共有多少种不同的商品出售

chipo['item_name'].nunique() # 50