【无标题】

本文详细介绍Pandas库在数据分析中的关键应用,包括数据结构(Series和DataFrame)、数据操作、统计汇总、日期时间处理,以及数据清洗、筛选和转换等实用技巧。通过实例演示如何高效地处理大规模数据,适合数据分析初学者和专业人士。

Pandas库

  • 基于NumPy 的一种工具,为解决数据分析任务而创建的,纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。

  • 基本上你能用Excel或者BI工具进行的数据处理,Pandas也都能实现,而且更快

  • 开源社区:GitHub - pandas-dev/pandas

# 导入pandas库:pip install pandas
import pandas as pd

数据结构:Series、DataFrame

区别
* series,只是一个一维数据结构,它由index和value组成。
* dataframe,是一个二维结构,除了拥有index和value之外,还拥有column。

联系
* dataframe由多个series组成,无论是行还是列,单独拆分出来都是一个series。

np.random.rand()函数,参数是数组的维度,随机样本取值范围是[0,1),不包括1。
random.randn() 参数是数组的维度,返回一组服从正态分布的随机值
random.randint(low, high=None, size=None, dtype=int)
输入:
low—–为最小值
high—-为最大值
size—–为数组维度大小
dtype—为数据类型,默认的数据类型是np.int。
返回值:
返回随机整数或整型数组,范围区间为[low,high),包含low,不包含high;
high没有填写时,默认生成随机数的范围是[0,low)

# 时间列表,30条,按月变动(间隔30天一个月)
dates = pd.date_range('20210101',periods=30,freq='M')

date2 = pd.date_range('20210101',periods=20,freq='3D') # 间隔3天

# 创建二维表数据,一个dataframe:带时间戳的价格数据
data = pd.DataFrame(np.random.rand(30,3),index=dates,columns=list('ABC'))

# 头部数据,尾部数据
data.head() # 默认是前5行,也可以指定

data.head(2)

# 尾部数据
data.tail()

# 查看数值(除去索引和列),两种方法data.values;data.to_numpy()
data.values

# 查看统计摘要
data.describe()

 

# 列数据
data['A'] # 单列

data[['A','B']] # 多列

# 行数据,两种方式,data[0:7];data.iloc[0:5];data.loc['20210101':'20211001']
# data.loc[]可以按索引或者列标签筛选
data[0:7] # 使用切片

data.iloc[0:5] # 使用行号

data.loc['20210101':'20211001','A':'B'] # 按行时间筛选+列筛选

data.loc['20210101':'20211001',['A','C']] # 按行时间筛选+列筛选

# 按值筛选
data = round(data,2) # float是很精确的很多位,取小数点后两位,
# 按指定的位数对数值进行四舍五入,语法是ROUND(number, num_digits)

data[data['A']==0.03]

data[data['A']==0.03]['A'] # 只看满足条件的A列数据

  data2 = data[data>0.5] # data中大于0.5的数据,不满足(false)的部分自动用NaN填充

# 去缺失值 (场景,去除包含null的行,都不考虑)
data2.dropna()

# 去除重复值
data.drop_duplicates()

  1. 去除完全重复的行数据 data.drop_duplicates(inplace=True)

  2. 去除某几列重复的行数据

data.drop_duplicates(subset=['A','B'],keep='first',inplace=True) subset: 列名,可选,默认为None

keep: {‘first’, ‘last’, False}, 默认值 ‘first’

first: 保留第一次出现的重复行,删除后面的重复行。

last: 删除重复项,除了最后一次出现。

False: 删除所有重复项。

inplace:布尔值,默认为False,是否直接在原数据上删除重复项或删除重复项后返回副本。(inplace=True表示直接在原来的DataFrame上删除重复项,而默认值False表示生成一个副本。)

# 转置,排序
data.T

data.sort_values(by='C') # C列升序

data.sort_values(by='B',ascending=False) # B列降序

data.sort_index(ascending=False) # 默认按index排序,降序

 

- d02 = pd.DataFrame(data,index=labels)

- 各科成绩都大于60的数据(必须去重)

- score_qualified = d02[d02>60].dropna()

- 每科的平均分数

- d02.mean()

- 每个学生的总成绩,axis=1,按行计算

- d02[‘总分’]=d02.sum(axis=1)

- d02.sort_values(by=‘总分’,ascending=False)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值