了解数据
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']]