18、python数据分析项目1

本文详细展示了如何用Python和pandas处理股票历史数据、欧洲杯比赛数据以及酒消耗数据,涉及数据获取、清洗、筛选和统计分析
摘要由CSDN通过智能技术生成

一、分析股票数据

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'])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值