Pandas数据分析常用函数

本文深入解析Pandas中Series和DataFrame这两种核心数据类型,包括Series的创建、索引操作、统计分析,以及DataFrame的构造、数据筛选、分组聚合、数据处理和可视化。通过实例演示了如何高效处理和分析数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pandas常用数据类型

pandas扩展库是基于扩展库numpy和matplotlib的数据分析模块,是一个开源的项目,提供了大量的标准数据类型,具有高效操作大型数据的功能。
使用pip install pandas在命令提示符环境下安装扩展库pandas。
常用数据类型:
1.Series,带标签的一维数组
2.DataFrame,带标签且大小可变的二维表格结构

Series简介与常用操作

1.series简介
Series是pandas提供的一维数组,有索引和值两部分组成,是一个类似于字典的结构。值的类型可以不同,默认使用从0开始的整数作为索引,也可以自定义。
2.Series常用操作

import pandas as pd
import matplotlib.pyplot as plt

# 设置输出结果列对齐
pd.options("display.unicode.ambiguous_as_wide",True)
pd.options("display.unicode.east_asian_width",True)

s1 = pd.Series(range(1, 20, 5))
s2 = pd.Series({"语文":90, "数学":92, "Python":98, "物理":87, "化学":92})

# 1.修改指定索引对应值
s1[3] = -17
s2["语文"] = 94

# 2.求绝对值
print(abs(s1))

# 3.s1所有值加五
print(s1+5)

# 4.s1所有索引前加2
print(s1.add_prefix(2))

# 5.绘制s2直方图
s2.hist()
plt.show()

# 6.s2所有索引后加_独角兽
print(s2.add_suffix("_独角兽"))

# 7.s2中最大索引
print(s2.idxmax())

# 8.测试s2的值是否在指定区间内
print(s2.between(90,94,inclusive=True))

# 9.查看s2中大于中值数的数据
print(s2[s2>s2.median()])

# 10.s2数值运算
print(round((s2**0.5)*10, 1))

# 11.s2最小的两个数
print(s2.nsmallest(2))

# 两个等长的Series对象之间可以进行四则运算和幂运算
# 只对两个Series对象中都有相同索引的进行计算
# 非共同索引对应值为NaN
# 12.求两对象和
print(pd.Series(range(5)) + pd.Series(range(5,10)))

# 13.pipe()实现函数链式调用功能,每个值的平方对5的余数
print(pd.Series(range(5)).pipe(lambda x,y,z:(x**y)%z, 2, 5))

# 14.标准差,无偏方差,无偏标准差
print(pd.Series(range(5)).std())
print(pd.Series(range(5)).var())
print(pd.Series(range(5)).sem())

# 15.查看是否存在等价于True的值
print(any(pd.Series([3,0,True])))

# 16.查看是否所有值都等价于True
print(all(pd.Series([3,0,True])))

DataFrame简介与常用操作

1.DataFrame简介
DataFrame是pandas最常用的数据结构,每个DataFrame对象可以看作一个二位表格,由索引(index)、列名(columns)、和值(values)三部分组成。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


pd.set_option("display.unicode.ambiguous_as_wide", True)
pd.set_option("display.unicode.east_asian_width", True)

# 在[1,20]区间上生成5行3列15个随机数
# 使用index参数指定索引,columns参数指定每列标题
df = pd.DataFrame(
    np.random.randint(1, 20, (5, 3)),
    index=range(5),
    columns=["a", "b", "c"]
)

dn = pd.DataFrame(
    {"语文":[87,79,67,92],
     "数学":[93,89,80,77],
     "英语":[90,80,70,75]},
    index=["张三", "李四", "王五", "赵六"]
)
print(dn)

# 1.报存为csv文件/excel文件
dn.to_csv("成绩.csv")
dn.to_excel("成绩.xlsx")

# 2.读取csv文件/excel文件
dn = pd.read_csv("成绩.csv", usecols=["语文", "英语"])
# usecols:读取选中列数据,index_col:以莫列为新索引,skiprows:跳过所选行
dn = pd.read_excel("成绩.csv", usecols=["语文", "数学", "英语"], index_col=1)

# 3.筛选符合要求数据
# 3.1切片
print(dn[:])
# 3.2 iloc使用下标为索引
print(dn.iloc[[1,2],[0,1]])
# 3.3 loc使用标签文本作为索引
print(dn.loc[["张三","王五","赵六"],["数学"]])
# 3.4 高于90分的数据
print(dn[dn>90])
# 3.5 isin求张三李四总分
print(dn[dn.index.isin(["张三", "李四"])].sum())
print(dn[dn["语文"].between(90,100)])

# 4.查找语文最高分
print(dn["语文"].max())
print(dn.loc[dn["语文"].idxmax(),"语文"])

# 5. 数据排序
# sort_index(axis=0,ascending=True,inplace=False)函数
# 参数axis=0是表示按行索引排序,axis=1时表示按列名排序
# 参数ascending:true为升序、false为降序
# 参数inplace:true表示原地排序,false表示返回一个新的DataFrame
print(dn.sort_values(by=["语文","数学","英语"], ascending=[False,True,True]))

# 6.分组与聚合
# groupby()函数
ds = pd.DataFrame(
    {"语文":[87,79,67,92],
     "数学":[93,89,80,77],
     "英语":[90,80,70,75]},
    index=["张三", "李四", "王五", "赵六"]
)
dn = dn.append(ds)
print(dn.groupby(by=dn.index)["语文", "数学", "英语"].sum())
print(dn.agg({"语文":["max","min"]}))

# 7.处理缺失值
print(dn.dropna())

# 8.处理重复值
print(dn[dn.duplicated()])
dn = dn.drop_duplicates()
print(dn)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独角兽小马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值