您好,欢迎来到抵帆知识网。
搜索
您的当前位置:首页python数据科学案例分析

python数据科学案例分析

来源:抵帆知识网
数据科学基础(PYTHON)大作业

一、Chipotle餐厅案例分析 ①数据读入

import pandas as pd

new=pd.read_csv('D:/qqfile/data2020/data2020/chipotle.csv',encoding='gbk',sep = '\')

print(new) ②数据概要 New.info()

③缺失值和重复值处理 new.isnull().sum()

对缺失值采取向前填充的方式 f=new.fillna(method='ffill') f

重复值处理

通过这个由于ipython控制台显示不全的缘故,无法准确判断是否存在重复值 所以采取以下函数 new.duplicated().sum()

new.drop_duplicates(subset=['order_id'],keep='last')#按照订单号列进行删除,保留最后一次出现的数据

④自定义查询

1.一共有多少种不同的菜品被下单 new[‘item_name’].nunique()

2.点餐的顾客最喜欢点哪种食品(点的最多的食物) new['item_name'].value_counts()

由高至低排序可见点的最多的食物是 chicken bowl 3.最贵的食物是什么

a=new.sort_values(by='item_price',ascending=False) a.set_index('item_name')

4.每个订单号所点菜品的总额

new.groupby('order_id')['item_price'].sum()

5.按照每单所下菜品数进行统计 new.quantity.value_counts()

二、欧洲杯案例 ①读入数据

import pandas as pd

import matplotlib.pyplot as plt

euro=pd.read_csv('D:\\qqfile\\data2020\\data2020\\Euro2012_stats.csv',encoding='gbk')

print(euro)

②数据概览

③重复值与缺失值处理 1.重复值查询(无重复值)

2.缺失值查询(一处缺失值)

④自定义查询

1.进球数小于6的球队 euro[euro['Goals']<6]

更直观的表示(只看Team列)

2.点球进球数最多的球队

a=euro.sort_values(by='Penalty goals',ascending=False)#按点球数从小到大排序 a

a.set_index('Penalty goals')#以点球数列设为索引

可知最多的为三支球队(德国、希腊、西班牙),都是1球

3.在总进球数最多的三支球队中,射正率最低的球队 b=euro.sort_values(by='Goals',ascending=False) b.set_index('Shooting Accuracy')

4.分别返回进球数为3、黄牌数为11、犯规数为62的查询结果

euro.loc[np.where((euro['Goals']==3)|(euro['Fouls Conceded']==62)|(euro['Yellow

Cards']==11))]

5.分别计算被犯规数与角球数最大与最小的差值

diff=lambda x:x.max()-x.min()

euro[['Fouls Won','Corners Taken']].apply(diff,axis=0)

三、苹果股票案例分析 ①数据读入

import pandas as pd

apple=pd.read_csv('D:/qqfile/data2020/data2020/Apple_stock.csv',encoding='gbk',sep = '\') print(apple) ②数据概览

Date列转化为时间序列

③缺失值/重复值处理 (略) ④自定义查询

1. 最高收盘价与最低收盘价之间相差多大 diff=lambda x:x.max()-x.min()

apple[['Close']].apply(diff,axis=0)

2. 开盘价最高与开盘价最低之间相差多久 apple.sort_values(by='Open')

最低为1982-07-08,最高为2012-09-21,相差11033天

3. 同一天之中最高价和最低价相差最大的日期 apple.insert(4,'minus',(apple.High-apple.Low)) apple.sort_values('minus',ascending=True)

相差最大的那一天为2010-05-06

4. 成交量最高的那一天的收盘价

apple.sort_values('Volume',ascending=False)

那一天的收盘价为25.75

5. 已调整收盘价由低至高排列最低的三天 apple.sort_values('Adj Close',ascending=True)

此三天为1982-07-08,1982-07-09,1982-07-07

⑤可视化处理:

import matplotlib.pyplot as plt import mpl_finance as mpf import numpy as np import pandas as pd

from matplotlib.pylab import date2num import matplotlib.ticker as ticker import time

data=pd.read_csv('D:/qqfile/data2020/data2020/Apple_stock.csv',usecols=['Date','Open','Close','High','Low','Volume']) data[data['Volume']==0]=np.nan data=data.dropna()

data.sort_values(by='Date',ascending=True,inplace=True)

data=data[['Date','Open','Close','High','Low','Volume']] data=data.head(62)

# 生成横轴的刻度名字

Date_tickers=data.Date.values

weekday_quotes=[tuple([i]+list(quote[1:])) for i,quote in enumerate(data.values)] # print weekday_quotes

fig,ax=plt.subplots(figsize=(1200/72,480/72))

def format_Date(x,pos=None):

if x<0 or x>len(Date_tickers)-1: return ''

return Date_tickers[int(x)]

ax.xaxis.set_major_locator(ticker.MultipleLocator(6))

ax.xaxis.set_major_formatter(ticker.FuncFormatter(format_Date)) ax.grid(True)

# fig.autofmt_xdate()

mpf.candlestick_ochl(ax,weekday_quotes,colordown='#53c156', colorup='#ff1717',width=0.2) plt.show()

四、泰坦尼克号案例 ①数据读入

import pandas as pd

titanic=pd.read_csv('D:\\qqfile\\data2020\\data2020\\Titanic.csv',encoding='gbk') print(titanic)

②数据概要

③缺失值处理:

Titanic.isnull().sum() #统计缺失值总数

对Cabin列缺失值采取向后填充的方式 f=titanic.fillna(method='bfill') f

④自定义查询

1.一共有多少人幸存

titanic['Survived'].value_counts()

2.年龄超过30的人数有多少 a=titanic[titanic['Age']>30] a

a.count()

返回a中非NAN数量,则从Name一列看出超过30岁的共305个

3.在幸存人群中,一等、二等、三等舱乘客的占比 titanic.groupby('Pclass')['Survived'].mean()

4.统计16岁以下孩子的生还率

(缺失值处理)设置一个年龄区间,统计每个年龄段的人数。考虑到年龄有许多缺失值,选择向前填充的方式进行填充 titanic.Age.fillna(method='ffill',inplace=True) ages=[0,6,16,40,60,100]

pd.cut(titanic.Age,bins=ages).value_counts()

5.幸存人数最多的舱位中的最年长的男性从哪个港口登船

由此前的记录中得知幸存人数最多的舱位为上等舱(Pcalss=1)c=titanic[titanic['Pclass']==1] c

c.sort_values(by='Age')#按age列的数值排序

可见年龄最大的男性(80岁)从南安普顿上船

6.船上年龄相差最大为多少 diff=lambda x:x.max()-x.min()

titanic[['Age']].apply(diff,axis=0)

⑤可视化处理

1)import pandas as pd

import matplotlib.pyplot as plt

titanic=pd.read_csv('D:\\qqfile\\data2020\\data2020\\Titanic.csv',encoding='gbk') print(titanic)

plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 plt.rcParams['font.family']='sans-serif'

plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号 fig = plt.figure()

fig.set(alpha=0.2) # 设定图表颜色alpha参数

plt.subplot(221) # 在一张大图里分列几个小图

titanic.Survived.value_counts().plot(kind='bar')# 柱状图 plt.title(u\"获救情况 (1为获救)\") # 标题 plt.ylabel(u\"人数\") # Y轴标签

plt.subplot(222)

titanic.Pclass.value_counts().plot(kind=\"bar\") # 柱状图显示 plt.ylabel(u\"人数\")

plt.title(u\"乘客等级分布\")

plt.subplot(223)

plt.scatter(titanic.Survived, titanic.Age) #为散点图传入数据 plt.ylabel(u\"年龄\") # 设定纵坐标名称 plt.grid(b=True, which='major', axis='y') plt.title(u\"按年龄看获救分布 (1为获救)\")

plt.subplot(224)

titanic.Embarked.value_counts().plot(kind='bar') plt.title(u\"各登船口岸上船人数\") plt.ylabel(u\"人数\")

plt.savefig('titanic.png',dip='500') #plt.show()

2)import pandas as pd

import matplotlib.pyplot as plt

titanic=pd.read_csv('D:\\qqfile\\data2020\\data2020\\Titanic.csv',encoding='gbk') print(titanic)

titanic.Age[titanic.Pclass == 1].plot(kind='kde') # 密度图 titanic.Age[titanic.Pclass == 2].plot(kind='kde') titanic.Age[titanic.Pclass == 3].plot(kind='kde') plt.xlabel(u\"年龄\")# plots an axis lable plt.ylabel(u\"密度\")

plt.title(u\"各等级的乘客年龄分布\")

plt.legend((u'头等舱', u'2等舱',u'3等舱'),loc='best') #图例 plt.show()

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- dfix.cn 版权所有 湘ICP备2024080961号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务