Day1--python三大库-Pandas

Pandas数据处理

pandas是专门为了处理表格和混杂数据设计的python库

2.series

1.series的创建

python 复制代码
import pandas as pd
s = pd.Series([1,2,3,4,5])

左边一列为数据值索引,右边才是数据

自定义索引:

python 复制代码
x = pd.Series(range(4),index=['a','b','c','d'])

3.Series里访问数据

4.Series的常用方法

python 复制代码
import numpy as np
import pandas as pd


# 1.series的创建

s = pd.Series(range(10))
print(s)

# 自定义索引
x = pd.Series(range(4),index=['a','b','c','d'])


# Series的属性

'''
    index : Series的索引
    values : Series的值
    dtype或dtypes : Series的元素类型
    shape : Series的形状
    ndim : Series的维度
    size : Series的元素个数
    name : Series的名称
    loc[] : 显式索引,按标签索引或切片
    iloc[] : 隐式索引,按位置索引或切片
    at[] : 使用标签访问单个元素
    iat[] : 使用位置访问单个元素
'''

# 显式索引
print(x.loc['b'])
# 隐式索引
print(x.iloc[0])


# 访问Series数据

print(x.iat[1])
print(x['a'])
print(x[x<3])
x['e'] = 5
x['f'] = 6
print(s.head())     # 默认前五行
print(s.tail())     # 默认后五行


# Series常用方法

"""
head() : 查看前n行数据,默认5行
tail() : 查看后n行数据,默认5行
isin() : 判断元素是否包含在参数集合中
isna() : 判断是否为缺失值
sum()  : 求和,自动忽略缺失值
mean() : 平均值
min()  : 最小值
max()  : 最大值
var()  : 方差
std()  : 标准差
median() : 中位数
mode() : 众数
quantile(q) : 分位数,q取0-1之间
describe() : 常见统计信息(count,mean,std,min,25%,50%,75%,max)
value_counts() : 每个唯一值的出现次数
count() : 非缺失值个数(去重)
nunique() : 唯一值个数(去重)
unique() : 获取去重后的值数组
drop_duplicates() : 去除重复项
sample() : 随机抽样
sort_index() : 按索引排序
sort_values() : 按值排序
replace() : 替换值
keys() : 返回Series的索引对象
"""


# 案例1:创建一个包含10名学生成绩的Series,成绩范围在50-100之间,计算平均分,最高分,最低分,并找出高于平均分的学生人数

np.random.seed(42)
scores = pd.Series(np.random.randint(50,101,10),index = ['学生' + str(i) for i in range(1,11)])
print(scores)

# 得到数据
mean = scores.mean()
max = scores.max()
min = scores.min()
print(mean)
print(max)
print(min)
scores[scores > mean].count()


'''
案例二:给定某城市一周每天的最高温度Series,完成以下任务:
找出温度超过30度的天数
计算平均温度
将温度从高到低排序
找出温度变化最大的两天
'''

tem = pd.Series([28,31,29,32,30,27,33],index = ['周一','周二','周三','周四','周五','周六','周日'])
print(f'温度超过30度的天数是${tem[tem>30]}')
print(f'平均气温是${tem.mean()}')
print('从高到低排序')
print(tem.sort_values())
t = tem.diff().abs()    # diff()算逐差
print(f'温度变化最大的两天是:${tem[t.sort_values(ascending = False).head(2).keys()]}')


'''
案例三:股票价格分析
给定某股票连续10个交易日的收盘价Series:
计算每日收益率(当日收盘价/前日收盘价 - 1)
找出收益率最高和最低的日期
计算波动率(收益率的标准差)
'''

prices = pd.Series([102.3,103.5,105.1,104.8,106.2,107.0,106.5,108.1,109.3,110.2],index=pd.date_range('2023-01-01',periods=10))
print(prices)

p1 = prices.pct_change()     # pct_change() 算收益率
maxday = p1.idxmax()         # idxmax 最大值对应的索引
minday = p1.idxmin()         # idxmin 最小值对应的索引
p2 = p1.std()
print(f'收益率是{p1}')
print(f'收益率最高的一天是{maxday}')
print(f'收益率最低的一天是{minday}')
print(f'波动率是{p2}')


'''
销售数据分析
某产品过去12个月的销售量Series:
计算季度平均销量(每3个月为一个季度)
找出销量最高的月份
计算月环比增长率
找出连续增长超过2个月的月份
'''

# 数据
sales = pd.Series([120,135,145,160,155,170,180,175,190,200,210,220],index=pd.date_range('2022-01-01',periods=12,freq='MS'))

# 季度的平均销量
sales.resample('QS').mean()     # 重新采样
# 最大销量对应月份
s_max = sales.max()
# 增长率
s1 = sales.pct_change()
# 连续增长超过2个月的月份
s = s1 > 0
print(s[s.rolling(3).sum()==3].keys().tolist())


'''
每小时销售数据分析
某商店每小时销售额Series:
按天重采样计算每日销售额
计算每天营业时间(8:00-22:00)和非盈利时间的销售额比例
找出销售额最高的3个小时
'''

np.random.seed(42)
hours_sales = pd.Series(np.random.randint(0,100,24),index = pd.date_range('2022-01-01',periods=24,freq='h'))
print(hours_sales)

# 重采样
day_sales = hours_sales.resample('D').sum()
print(day_sales)

# 计算每天营业时间和非营业时间的比例
hours_sales.between_time('8:00','22:00')        # 筛选一段时间内的
business_hours_sales = hours_sales[(hours_sales.index.hour>=8) & ((hours_sales.index.hour<=22))].sum()
print(business_hours_sales)
print(business_hours_sales / (day_sales - business_hours_sales))
# 营业额最高的三小时
print(hours_sales.nlargest(3))
相关推荐
m0_613856294 小时前
mysql如何利用事务隔离级别解决特定业务冲突_mysql隔离方案选型
jvm·数据库·python
AI_小站4 小时前
6个GitHub爆火的免费大模型教程,助你快速进阶AI编程
人工智能·langchain·github·知识图谱·agent·llama·rag
xindoo4 小时前
GitHub Trending霸榜!深度解析AI Coding辅助神器 Superpowers
人工智能·github
时间之里5 小时前
【深度学习】:RF-DETR与yolo对比
人工智能·深度学习·yolo
北京阿法龙科技有限公司5 小时前
数智化升级:AR 智能眼镜驱动工业运维效能革新
人工智能
风落无尘5 小时前
《智能重生:从垃圾堆到AI工程师》——第二章 概率与生存
大数据·人工智能
j_xxx404_5 小时前
Linux:静态链接与动态链接深度解析
linux·运维·服务器·c++·人工智能
收获不止数据库5 小时前
达梦9发布会归来:AI 时代,我们需要一款什么样的数据库?
数据库·人工智能·ai·语言模型·数据分析
hhb_6185 小时前
AI全栈编程生存指南
人工智能
AI-Frontiers5 小时前
transformer进阶之路:#2 工作原理详解
人工智能·深度学习·transformer