首页 > 其他分享 >Pandas基础

Pandas基础

时间:2023-06-30 21:13:10浏览次数:34  
标签:index obj Series frame 基础 DataFrame pd Pandas

pandas基础

pandas包导入

import pandas as pd

pandas提供两种常用的数据结构:SeriesDataFrame

Series

Series是一维数组型对象

obj = pd.Series([4,7,-5,3])

obj2 = pd.Series([1,3,4], index=['d','b','c'])

可以通过values属性查看值。

可以通过index属性查看值。

obj2.values

obj2.index

还可以通过索引查值

obj2['d']

obj2[['a','c]]

可以对整个数组进行操作

np.exp(obj2)

obj2 * 2

可以通过传入字典生成数组

sdata = {'a':3400, 'b': 456, 'c': 324}

obj3 = pd.Series(sdata)

可以调整字典生成的顺序

states = ['b', 'a', 'c']

obj4 = pd.Series(sdata, index= states)

没有的值会出现NaN,可以通过isnull或者notnull判断是否为空

pd.isnull(obj4)

pd.notnull(obj4)

Series对象自身和索引都有name属性

obj4.name='abc'

obj4.index.name='state'


DataFrame

DataFrame表示矩阵的数据表

可以通过等长度列表或Numpy数组字典生成

data = {'state' : ['ww','ww','ww','nn','nn'],

'year' : [2000,2001,2002,2003,2004],

'pop' : [1.5, 1.6, 1.7, 1.8, 1.9]}

``frame = pd.DataFrame(data)`

DataFrame的head方法可以显示头5行

frame.head()

可以指定列的顺序,如果列不在,出现缺失值NaN。

也可以指定行标。

frame2 = pd.DataFrame(data, columns=['year', 'state', 'pop', 'debt'],

index=['one','two','three','four'])

可以通过列名检索一列

frame2['state']

frame2.year

可以通过loc属性选取特定的行

frame2.loc['three']

可以对某些列赋值

frame2.debt = 16.5

frame2.debt = np.arange(4.)

可以通过Series给DataFrame进行赋值

val = pd.Series([-1.2,-1.5,-1.7], index = ['two','four','five'])

frame2.debt = val

删除列用del

del frame.eastern

DataFrame可以转置

frame3.T

DataFrame的索引和列也有name属性

frame3.index.name = 'year'

frame3.columns.name = 'state'

DataFrame的values属性可以以多维数组方式返回值

frame3.values


Series和DataFrame数据交互的基本功能

重建索引

reindex方法可以创建一个符合新索引的新对象,已有的值重新排序,没有的值NaN补全

obj = pd.Series([1,2,4],index = ['d','b','a','c'])

obj2 = obj.reindex(['a','b','c','d','e'])

DataFrame中reindex默认改变行

frame2 = frame.reindex(['a','b','c','d'])

改变列用columns关键字

states = ['Texas', 'Utah', 'California']

frame.reindex(columns =states)

同时重建行和列索引

ww = ['a','b','c','d']

frame.reindex(ww).reindex(columns=states)

删除条目

drop方法可以删除条目

obj = pd.Series(np.arange(4.), index=['a','b','c','d','e'])

obj.drop('c')

obj.drop(['b','c'])

对于DataFrame

默认是删除行,可以通过参数axis等于0或者1选择参数,0是行,1是列

data.drop(['two','three'],axis=1)

可以通过inplace属性删除原对象

obj.drop('c',inplace=True)

索引选择与过滤

python切片是不包括尾部的,Series包括尾部

obj['b':'c'] = 5 //b到c都包括

可以通过loc和iloc进行数据选择

data = pd.DataFrame(np.arange(16).reshape((4,4)),
                   index = ['Ohio','Colorado','Utah','New York'],
                   columns = ['one','two', 'three', 'four'])
data.loc[['Colorado','Utah'],['two','three']]
data.iloc[2,[3,0,1]]

loc切片是左闭右闭

iloc切片是左闭右开

算数和数据对齐

两个Series或者DataFrame可以直接加减,不同的部分会产生NaN

可以通过方法解决NaN值的问题,其中带r的是反转(例如除数被除数互换)

方法 描述
add,radd 加法
sub,rsub 减法
div,rdiv 除法
floordiv,rfloordiv 整除
mul,rmul 乘法
pow,rpow 幂次方

用DataFrame减去Series,会每行都减去Series,这就是广播机制

如果想每列都减去Series,需要匹配轴

frame1.sub(series1,axis='index')

frame1.sub(series1,axis=0)

函数应用和映射

numpy的函数对pandas对象也有效

np.abs(frame1)

将函数应用到一行或一列上,DataFrame的apply方法,默认作用在行上

f = lambda x: x.max() - x.min()

frame.apply(f)

通过axis可以作用在列上

frame.apply(f,axis='columns')

DataFrame可以使用applymap方法,逐个单元格应用

format = lambda x: x+10

frame.applymap(format)

Series有map方法,可以逐列应用

frame['e'].map(format)

排序

obj.sort_index() //默认为行,可以通过axis=1变成列

默认升序,可以降序

frame.sort_index(axis=1,ascending=False)

默认所有NaN值都在尾部

DataFrame可以通过指定列为排序列,通过sort_values的by参数

frame.sort_values(by=‘b')

排名

obj.rank() //取平均名词

可以降序

obj.rank(ascending=False)

相同排名可以取平均名词,也可以最大,最小,或者第一次遇到名词高

average,min,max,first

obj.rank(method='min')


统计性计算

求和可以用sum方法,默认列上求和

frame1.sum()

可以通过axis=1变成行上

frame1.sum(axis=1)

除非整行或整列都是NaN,否则Na值是被自动排除的,可以通过skinna不忽略Na值。

frame1.mean(skipna=False)

方法 描述
count 非NA个数
describe 汇总统计
min,max 最小最大
argmin,argmax 最小最大所在索引
sum
mean 均值
median 中位数
prod 所有值的积
var,std 方差,标准差
cumsum 累计值
cumprod 累计积
pct_change 计算百分比

相关性和协方差

corr方法计算两个Series中重叠的,非Na的,按索引对齐值的相关性。

frame1['msft'].corr(frame1['ibm'])

或写成fame1.msft.corr(frame1.ibm)

cov计算协方差

frame1['msft'].cov(frame1['ibm'])

唯一值,计数和成员属性

unique方法会给出Series中的唯一值

uniques = obj.unique()

唯一值没有排序,排序可以使用sort方法

uniques.sort()

计算个数可以用value_counts方法

obj.value_counts()

isin判断是否包含

obj.isin(['b','c']) //将数组值全变成True和False

标签:index,obj,Series,frame,基础,DataFrame,pd,Pandas
From: https://www.cnblogs.com/xiaowuroommate/p/17517818.html

相关文章

  • Java-语法基础
    JDK8复习用Java前置知识JavaSEJavaStandardEdition标准版支持面向桌面级应用(如Windows下的应用程序)的Java平台,提供了完整的Java核心API此版本以前称为J2SEJavaEEJavaEnterpriseEdition企业版一套用于企业环境下的应用程序的应用方案(包含:Servlet、Jsp),主要针......
  • Java基础语法
    1、Java的八种基本数据类型1、byte1字节取值范围:-128~1272、short2字节取值范围:-32768~327673、int4字节取值范围:-231~231-1#int是开发中最常用的,也是Java中默认的数据类型4、long8字节取值范围:-263~263-1#声明超过int取值范围的lon......
  • Mysql基础篇(二)之函数和约束
    一.函数Mysql中的函数主要分为四类:字符串函数、数值函数、日期函数、流程函数1.字符串函数常用函数如下:函数功能CONCAT(S1,S2,......Sn)字符串拼接,将S1,S2,.....Sn拼接成一个字符串LOWER(str)将字符串str全部转为小写UPPER(str)将字符串str全部转为大写......
  • 【c++基础】位域结构体
    前言code#include<iostream>typedefstruct{unsignedinta:5;unsignedintb:3;}tBits;intmain(){tBitsaa;aa.a=205;//11001101aa.b=89;//01011001std::cout<<"a:"<<aa.a<<......
  • swiper基础
    /swiper笔记#Swiper.md##介绍Swiper是一款前端制作轮播图的插件##安装###CDN可以进入https://www.swiper.com.cn/cdn/index.html直接复制,一般使用`4.0.1`版本,复制下面两行,并且修改版本号即可。html<linkrel="stylesheet"href="https://cdnjs.cloudflare.com/......
  • 正则基础
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><body>用于匹配和操作文本的工具</body></html><script>//匹配字母constreg1=/[a-zA-Z]///匹配数字co......
  • 循环神经网络入门基础
    文章和代码已经归档至【Github仓库:<https://github.com/timerring/dive-into-AI>】或者公众号【AIShareLab】回复神经网络基础也可获取。循环神经网络序列数据序列数据是常见的数据类型,前后数据通常具有关联性例如“Catsaverage15hoursofsleepaday”语言模型语言模型是......
  • 行行AI人才直播第5期:系列课-AI理解及ChatGPT从基础到高级应用
    当前,人工智能是全世界研究的重点对象,也是人们茶余饭后讨论的经典话题。自从OpenAI发布ChatGPT-4之后,似乎无论是在工作、娱乐、甚至是日常生活中,我们都能感受到AI带来的便利和改变。然而,对于很多人来说,人工智能还是一个比较抽象的概念,既讲不清楚什么是人工智能,对ChatGPT的了......
  • 内网渗透基础学习
    1.内网渗透测试基础知识1.1内网工作环境内网环境分为工作组环境和域环境。工作组环境:工作组环境是最常见的资源管理方式,就是将不同的计算机按照功能/部门划分为不同的组,组内机器可以在网上邻居内相互访问,该方法适用在网络中计算机不多,资产规模小,且安全管理不严的情况下。域......
  • HTML基础
    HTMLHTML历史HTML(HypertextMarkupLanguage)的历史可以追溯到上世纪90年代初,以下是HTML的主要历史阶段:HTML1.0:在1991年发布,是HTML的最初版本,用于创建基本的文本和链接结构,但功能有限。HTML2.0:于1995年发布,引入了一些新的功能和标记,如表格、图像和表单元素。这是互联网早......