当前位置: 首页 > article >正文

pandas基础学习:常用基本函数

常用基本函数

csv数据:joyful-pandas/data/learn_pandas.csv at master · datawhalechina/joyful-pandas (github.com)

汇总函数

**headtail**分别表示返回表或者序列的前n行和后n行,其中n默认为5。

import numpy as np
import pandas as pd
df = pd.read_csv('xuexi.csv')
df = df[df.columns[1:]]
print('df.head(3) :')
print(df.head(3))
print('df.tail(3) :')
print(df.tail(3))

**info, describe**分别返回表的信息概况和表中数值列对应的主要统计量。

import numpy as np
import pandas as pd
df = pd.read_csv('xuexi.csv')
df = df[df.columns[1:]]
print("df.info():\n")
df.info() # 函数
print('------------')
print("df.describe():\n", df.describe()) # DataFrame类型

特征统计函数

SeriesDataFrame上定义了许多统计函数,最常见的是sum, mean, median, var, std, max, min

得到身高、体重平均值:

import numpy as np
import pandas as pd
df = pd.read_csv('xuexi.csv')
df = df[df.columns[1:]]
de_wh = df[['Height', 'Weight']]
print(de_wh.mean())

得到身高、体重最大值:

print(de_wh.max())

quantile, count, idxmax,它们分别返回的是分位数、非缺失值个数、最大值对应的索引。

import numpy as np
import pandas as pd
df = pd.read_csv('xuexi.csv')
df = df[df.columns[1:]]
de_wh = df[['Height', 'Weight']]
print('分位数\n', de_wh.quantile(0.75))
print('非缺失值\n', de_wh.count())
print('最大值对应的索引\n', de_wh.idxmax())

上面这些所有的函数,由于操作后返回的是标量,所以又称为聚合函数,它们有一个公共参数axis,默认为0代表逐列聚合。

  • axis=0:表示沿着列的方向进行操作,即对每一列进行聚合。这是默认值。
  • axis=1:表示沿着行的方向进行操作,即对每一行进行聚合。

唯一值函数

对序列使用uniquenunique可以分别得到其唯一值组成的列表和唯一值的个数。

import numpy as np
import pandas as pd
df = pd.read_csv('xuexi.csv')
df = df[df.columns[0:7]]
print('唯一值')
print(df['School'].unique())
print('唯一值计数')
print(df['School'].nunique())

value_counts可以得到唯一值和其对应出现的频数。

import numpy as np
import pandas as pd
df = pd.read_csv('xuexi.csv')
df = df[df.columns[0:7]]
print('唯一值')
print(df['School'].unique())
print('唯一值计数')
print(df['School'].nunique())
print('唯一值及其出现次数')
print(df['School'].value_counts())

drop_duplicates可以观察多个列组合的唯一值。(在Series类型上也可以使用)

其中的关键参数是keep,默认值first表示每个组合保留第一次出现的所在行,last表示保留最后一次出现的所在行,False表示把所有重复组合所在的行剔除。

此外,duplicateddrop_duplicates的功能类似,但前者返回了是否为唯一值的布尔列表,其keep参数与后者一致。其返回的序列,把重复元素设为True,否则为Falsedrop_duplicates等价于把duplicatedTrue的对应行剔除。

import numpy as np
import pandas as pd
df = pd.read_csv('xuexi.csv')
df = df[df.columns[0:7]]
df_demo = df[['Gender','Transfer','Name']]
print(df_demo.drop_duplicates(['Gender', 'Transfer']))

替换函数

一般而言,替换操作是针对某一个列进行的,因此下面的例子都以Series举例。pandas中的替换函数可以归纳为三类:映射替换、逻辑替换、数值替换。

其中映射替换包含replace方法。

Gender列属性值为Female、Male换为0、1:

print(df['Gender'].replace({'Female':0, 'Male':1}).head())

逻辑替换包括了wheremask,这两个函数是完全对称的:where函数在传入条件为False的对应行进行替换,而mask在传入条件为True的对应行进行替换,当不指定替换值时,替换为缺失值。

s = pd.Series([-1, 1.2345, 100, -50])
s = s.where(s < 0)
print(s)
s = pd.Series([-1, 1.2345, 100, -50])
s = s.where(s < 0, 321)
print(s)

数值替换包含了round, abs, clip方法,它们分别表示按照给定精度四舍五入、取绝对值和截断。

排序函数

排序共有两种方式,其一为值排序,其二为索引排序,对应的函数是sort_valuessort_index

为了演示排序函数,下面先利用set_index方法把年级和姓名两列作为索引,多级索引的内容和索引设置的方法将在第三章进行详细讲解。

df_demo = df[['Grade', 'Name', 'Height', 'Weight']].set_index(['Grade','Name'])

对身高进行排序,默认参数ascending=True为升序。

print(df_demo.sort_values('Height').head())

# 降序
print(df_demo.sort_values('Height', ascending=False).head())

在排序中,经常遇到多列排序的问题,比如在体重相同的情况下,对身高进行排序,并且保持身高降序排列,体重升序排列:

print(df_demo.sort_values(['Weight','Height'],ascending=[True,False]).head())

索引排序的用法和值排序完全一致,**只不过元素的值在索引中,此时需要指定索引层的名字或者层号,用参数level表示。**另外,需要注意的是字符串的排列顺序由字母顺序决定。

print(df_demo.sort_index(level=['Grade','Name'],ascending=[True,False]).head())

apply方法

apply方法常用于DataFrame的行迭代或者列迭代。

import numpy as np
import pandas as pd

df = pd.read_csv('xuexi.csv')
df = df[df.columns[0:]]
df_demo = df[['Height', 'Weight']]
def my_mean(x):
     res = x.mean()
     return res
df_demo.apply(my_mean)

x就指代被调用的df_demo表中逐个输入的序列

得益于传入自定义函数的处理,apply的自由度很高,但这是以性能为代价的。一般而言,使用pandas的内置函数处理和apply来处理同一个任务,其速度会相差较多,因此只有在确实存在自定义需求的情境下才考虑使用apply

Joyful-Pandas-课程详情 | Datawhale


http://www.kler.cn/a/526220.html

相关文章:

  • 《深度揭秘:TPU张量计算架构如何重塑深度学习运算》
  • 【漫话机器学习系列】067.希腊字母(greek letters)-写法、名称、读法和常见用途
  • java.math 包 中的 BigDecimal 类(详细案例拆解)
  • ResNet 残差网络
  • AI会对你的行业产生什么影响
  • Python练习(2)
  • hdfs:介绍三个脚本
  • jQuery小游戏(一)
  • 向上调整算法(详解)c++
  • 基于STM32的智能停车场管理系统设计
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.28 存储之道:跨平台数据持久化方案
  • 玩转大语言模型——使用langchain和Ollama本地部署大语言模型
  • 简易计算器(c++ 实现)
  • UE4.27打包安卓报错
  • 【C语言】如何写一个扫雷游戏
  • 【llm对话系统】大模型源码分析之llama kv cache缓存逻辑
  • 2.1.1 视觉与光学成像
  • 爬虫基础(五)爬虫基本原理
  • 云计算技术深度解析与实战案例
  • 6.进程的使用方式
  • 深入解析现代计算机内存访问机制:从虚拟地址到物理地址的转换与缓存优化
  • 九大服务构建高效 AIOps 平台,全面解决GenAI落地挑战
  • 实现智能教室能耗监测与管理系统的详细方案
  • MiniMax-01技术报告解读
  • 对比DeepSeek、ChatGPT和Kimi的学术写作摘要能力
  • pytorch深度Q网络