一、分析股票数据
import tushare as ts
import pandas as pd
import numpy as np
###获取数据
data=ts.get_hist_data('600919',start='2010-01-01')
###保存数据到本地数据
data.to_csv('data.csv')
###从本地读取数据
data=pd.read_csv('data.csv')
data.head(5)
##查看每一列数据类型
data.info()
###删列
data.drop('open',axis=1,inplace=True)
###修改字符串为时间序列类型
data['date']=pd.to_datetime(data['date'])
###修改行索引
data.set_index('date',inplace=True)
###获取收盘值大于开盘值3%的日期
data.index[(data['close']-data['open'])/data['open']>0.03]
###开盘比前日收盘跌超过2% shift:close列下移一行
data[(data['open']-data['close'].shift(1))/data['close'].shift(1)<-0.02].index
####2022至今每月第一个交易日买入1手,每年最后一个交易日卖出所有股票,收益是多少
####筛选时间,只有时间序列可如此筛选
data1=data['2022':'2023']
###成本:数据按照月进行重采样,firt()获取第一天的数
cost=data1.resample('M').first()['open'].sum()*100
###收益:数据按照年进行重采样,last()获取最后一天的数
data1.resample('Y').last()[:-1]['open'].sum()*1200+data1[:1]['close']*100
二、分析欧洲杯数据
##获取文件路径并读取数据:绝对路径、相对路径,通过os.getcwd()获取当前工作目录,os.path.join拼接目录,因为不同系统的拼接符不一样
import os
path=os.path.join(os.getcwd(),'欧洲杯+数据练习','exercise_data','Euro2012_stats.csv')
df=pd.read_csv(path)
###查看数据基本情况
df.info()
df.head()
###只取一列
df['Goals']
df.Goals###该种方式需符合标识符规范
###获取行、列数
df.shape
len(df)##行数
len(df.index)##行数
##获取列名
df.columns
###获取多列
df1=df[['Team', 'Yellow Cards', 'Red Cards']]
###排序
df1.sort_values('Yellow Cards',ascending=False)##单列
df1.sort_values(['Yellow Cards', 'Red Cards'],ascending=[True,False])##多列
###列均值
round(df1['Yellow Cards'].mean(),2)
###布尔索引筛选
df[df['Goals']>6]
###以G开头队伍名称
df[df['Team'].str.startswith('G')]
###选取前7列
df.iloc[:,0:7]
###选取除最后3列外所有的列
df.iloc[:,:-3]
###选取3个取值的字段
df[df.Team.isin(['England','Italy'])][['Team','Shooting Accuracy']]
df.loc[df.Team.isin(['England','Italy']),['Team','Shooting Accuracy']]
三、分析酒消耗数据
import pandas as pd
import os
#导入数据
path=os.path.join(os.getcwd(),'欧洲杯+数据练习','exercise_data','drinks.csv')
df=pd.read_csv(path)
df.info()
df.head()
#2:哪个大陆平均消耗的啤酒最多?
df.groupby(by='country')['beer_servings'].mean().sort_values(ascending=False)[:1]
df.groupby(by='country')['beer_servings'].mean().sort_values('beer_servings',ascending=False)[:1]
#列索引要加iloc,而行索引用切片,切片只是加[:1]
#3:打印出每个大陆(continent)的红酒消耗(wine_servings)的描述性统计信息
df.groupby(by='continent')['wine_servings'].describe()
#4:打印出每个大陆每种酒类别的消耗平均值
df.groupby(by='continent')[['beer_servings','spirit_servings','wine_servings']].mean()
#
#5:打印出每个大陆对spirit饮品消耗的平均值,最大值,最小值(.agg聚合的意思,是aggregate的意思)
df.groupby(by='continent')['spirit_servings'].agg(['max','min','mean'])