一、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
本站由北京市万商天勤律师事务所王兴未律师提供法律服务