实验10 Pandas实现数据分析
实验学时:2学时
实验类型:验证
实验要求:必修
一、实验目的
- 掌握Pandas的字符串函数。
- 掌握Pandas 统计汇总函数。
- 掌握Pandas排序、分组、合并与级联函数。
- 能利用上述函数进行综合数据分析。
二、实验要求
通过编程实现使用Pandas字符串函数进行文本处理,使用统计、汇总、排序、分组函数进行综合数据分析。
三、实验内容
任务1. 根据实验7任务3中对2018年厦门天气数据文件Xiamen_2018.csv进行数据清洗后得到的数据,作如下数据分析:
(1)分析2018年厦门市白天和晚上都是晴天的天数、白天和晚上都是雨天的天数。
(2)分析2018年厦门市全年最高温和最低温均不超过10的天数。
(3)分析2018年厦门市全年最高温超过30的天数。
(4)分析2018年厦门市全年空气质量为优的天数。
用Python编写程序实现。
任务2. 利用tushare模块导出2022年股票代码为“000001”的股票数据,按周汇总计算每周开盘价(monday_open)均值、收盘价(friday_close)均值、最高价(week_high)的日期、最低价(week_low)日期。用Python编写程序实现。
test10.py
import tushare as ts
import pandas as pd
def task1():
data = pd.read_csv('cleaned_xiamen_2018.csv', parse_dates=['日期'],
date_parser=lambda x: pd.to_datetime(x, format='%Y年%m月%d日'))
# (1) 分析白天和晚上都是晴天的天数、白天和晚上都是雨天的天数
sunny_days = data[(data['日间天气'] == '晴') & (data['夜间天气'] == '晴')]
rainy_days = data[(data['日间天气'].str.contains('雨')) & (data['夜间天气'].str.contains('雨'))]
print('(1) 白天和晚上都是晴天的天数:', len(sunny_days))
print('(1) 白天和晚上都是雨天的天数:', len(rainy_days))
# (2) 分析全年最高温和最低温均不超过10的天数
low_temperature_days = data[(data['当日最高温度'] <= 10) & (data['当日最低温度'] <= 10)]
print('(2) 最高温和最低温均不超过10的天数:', len(low_temperature_days))
# (3) 分析全年最高温超过30的天数
high_temperature_days = data[data['当日最高温度'] > 30]
print('(3) 最高温超过30的天数:', len(high_temperature_days))
# (4) 分析全年空气质量为优的天数
good_air_days = data[data['质量等级'] == '优']
print('(4) 空气质量为优的天数:', len(good_air_days))
def task2():
# tushare账户token
ts.set_token('添加自己的token')
# 初始化tushare pro接口
pro = ts.pro_api()
# 获取000001股票代码的2022年日线数据
stock_data = pro.daily(ts_code='000001.SZ', start_date='20220101', end_date='20221231')
# 转换日期列为日期类型
stock_data['trade_date'] = pd.to_datetime(stock_data['trade_date'])
# 将日期列设置为索引
stock_data.set_index('trade_date', inplace=True)
# 按周汇总计算
weekly_summary = stock_data.resample('W-Mon').agg({
'open': 'mean', # 周一开盘价均值
'close': 'mean', # 周五收盘价均值
'high': 'max', # 最高价日期
'low': 'min' # 最低价日期
})
# 重命名列
weekly_summary.columns = ['monday_open', 'friday_close', 'week_high_date', 'week_low_date']
# 打印结果
print(weekly_summary)
if __name__ == '__main__':
task1()
task2()
标签:数据分析,10,天数,days,2018,date,data,Pandas
From: https://www.cnblogs.com/IvanKK/p/17936745