python pandas 1

导入库 import pandas as pd

一、数据结构

1、Series

格式:pandas.Series(data,index,dtype) :date 一维数组;index = 指定标签,默认为从0开始的数字。

2、DataFrame

格式:pandas.DataFrame( data, index, columns, dtype, copy):data 二维数组;index 索引(行标签);colunms 列标签。

二、创建结构

1、空对象

series1 = pd.Series()

dataframe1 = pd.DataFrame()

2、数组对象

2.1、标量

series = pd.Series(5)

2.2、列表

series1 = pd.Series('小明', '小红', '小紫')

dataframe1 = pd.DataFrame(\['小明', '小红', '小紫', '小明', '小红', '小紫'])

2.3、字典

指定对象行标签为 name 和 gender(一维直接将键作为标签,二维将键作为列标签,需手动设置行标签(index),否则默认从0开始)。

series2 = pd.Series(data={"name":"小明","gender":"男"})

dataframe2 = pd.DataFrame({"name":"小明", '小红',"gender": "男",'女'},index='one', 'two')

2.4、列表内嵌套字典

根据index= 设置行标签;根据字典键设置列标签。

dataframe = pd.DataFrame({'name': "张三", 'age': 18},{'name': "小红", 'gender': "男", 'age': 19},index='name', 'gender')

2.5、Series 创建 DataFrame

若标签不一致,数据无法放到对应列

series1 = pd.Series("小黄", 5, "新诚信", 1, 11111)

series2 = pd.Series("小绿", 7, "新诚信", 2, 22222)

dataframe = pd.DataFrame(series1, series2, index='series1', 'series2')
series1 = pd.Series("小黄", 5, "新诚信", 1, 11111, index="name", "age", "address", "gender", "id")

series2 = pd.Series("小绿", 7, "新诚信", 2, 22222, index="name", "age", "address", "gender", "id")

dataframe = pd.DataFrame(series1, series2, index='series1', 'series2', columns="name", "age", "address", "gender", "id")

三、索引操作

1、列索引

通过列标签进行操作(Series只有一个标签,等同于DataFrame的行标签,所以列索引操作只有DataFrame 对象)

1.1、截取数据

格式:对象名称列名称 (列名称只能填写一个)

dataframe = pd.DataFrame({"name": "小明", '小红', "gender": "男", '女'},index='one', 'two')

print(dataframe'name')

print(dataframe'gender')

1.2、添加(修改)列

格式:对象名称列名称=数据(一般使用列表直接添加,元素个数要与行一致);若数据是标量,等同于每行都接收同一个值。

若列名称已存在于列标签中,则修改其标签内容,列名称不存在,添加一列数据,列标签为该列名称 (与字典新增修改一致)

dataframe'age' = 15

dataframe'age' = 15, 18

1.3、删除列

格式:对象名称.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise'):labels 单个标签或由多个标签组成的列表;axis =1(axis = columns) 删除列;columns 与labels功能一致,指定删除的列标签;inplace默认为False,返回新的对象,若为True,直接在原对象进行删除。

dataframe.drop(labels='age', axis=1, inplace=True)

2、行索引

2.1、截取数据

2.1.1、loc

只能使用标签索引,不能使用为位置数索引;此方法的切片方式前后端闭合。

如果选择单行或单列,返回的数据类型为Series;选择多行或多列,返回的数据类型为DataFrame;选择单个元素(某行某列对应的值),返回的数据类型为该元素的原始数据类型(如整数、浮点数等)。

格式:对象名称.locindexer、对象名称.locrow_indexer, column_indexer、对象名称.locindexer1: indexer2

series = pd.Series(data={"name": "小明", "gender": "男"})

dataframe = pd.DataFrame({"name": "小明", '小红', '小绿', "gender": "男", '女', '女',

'age': 15, 17, 16}, index='one', 'two', 'three')

dataframe'age' = 15, 17, 16

print(series.loc'name') # 标签为 name 的数据

print(series.loc'name':'gender') # 标签为 name 到 gender 之间的数据(前后闭合)

print(dataframe.loc'one') # 行标签为 one 的数据

print(dataframe.loc'one':'three') # 行标签从 one 到three 的所有行

print(dataframe.loc\['one', 'two', 'name', 'gender']) # 行从 one 到 two ,列从name 到 gender ;所围矩形的所有数据

2.1.2、iloc

只能基于位置推算获取数据(对loc的补充,格式并无区别)。

series = pd.Series(data={"name": "小明", "gender": "男"})

dataframe = pd.DataFrame({"name": "小明", '小红', '小绿', "gender": "男", '女', '女',

'age': 15, 17, 16}, index='one', 'two', 'three')

dataframe0 = 15, 17, 16

print(series.iloc0) # 位置第一的数据

print(series.iloc0:1) # 位置从第一到第二的数据

print(dataframe.iloc0) # 第一行的数据

print(dataframe.iloc0:2) # 第一行到第三行的所有行数据

print(dataframe.iloc\[0, 1, 0, 1]) # 行从1到2,列从1到2;所围矩形的所有数据

2.1.3、切片选取

与iloc类似,series0只有一个元素会被提醒;dataframe失去列表嵌套截取数据功能。

series = pd.Series(data={"name": "小明", "gender": "男"})

dataframe = pd.DataFrame({"name": "小明", '小红', '小绿', "gender": "男", '女', '女',

'age': 15, 17, 16}, index='one', 'two', 'three')

dataframe0 = 15, 17, 16

print(series0) # 位置第一的数据

print(series0:1) # 位置从第一到第二的数据

print(dataframe0) # 第一行的数据

print(dataframe0:2) # 第一行到第三行的所有行数据

2.2、添加行

2.2.1、loc

与列添加一致,通过行标签添加修改

dataframe'age' = 15, 18

2.2.2、concat

需要保持添加新行的列数等于原对象的列数,还需要使添加的列的标签等于原对象的列标签(使用数组的resahpe的方法改变形状最佳)。

axis=0 添加行 (列相等)

axis =1 添加列 (行相等)

dataframe = pd.DataFrame({"name": "小明", '小红', '小绿', "gender": "男", '女', '女',

'age': 15, 17, 16}, index='one', 'two', 'three')

dateframe1 = pd.DataFrame(np.array('小黑', '男', 16).reshape(1, 3), index='four', columns='name', 'gender', 'age')

dataframe = pd.concat(dataframe, dateframe1, axis=0)

2.3、删除行数据

与列删除数据方法一致。

格式:对象名称.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise'):labels 单个标签或由多个标签组成的列表;axis =0(axis = index) 删除列;index 与labels功能一致,指定删除的行标签;inplace默认为False,返回新的对象,若为True,直接在原对象进行删除。

dataframe.drop(labels='one', axis=0, inplace=True)

四、对象常用函数

1、head() 和 tail()

head :默认首部五行

tail:默认尾部五行

series = pd.Series(data={"name": "小明", "gender": "男"})

dataframe = pd.DataFrame({"name": "小明", '小红', '小绿', "gender": "男", '女', '女',

'age': 15, 17, 16}, index='one', 'two', 'three')

dataframe.drop(labels='one', axis=0, inplace=True)

print(series.head()) # 默认首部五行,参数填写数值

print(dataframe.head())

print(series.tail()) # 默认尾部五行,参数填写数值

print(dataframe.tail())

2、isnull() 和 nonull()

isnull():如果为值不存在或者缺失,则返回 True

notnull():如果值不存在或者缺失,则返回 False

series = pd.Series(data={"name": "小明", "gender": "男"})

dataframe = pd.DataFrame({"name": "小明", '小红', '小绿', "gender": "男", '女', '女',

'age': 15, 17, 16}, index='one', 'two', 'three')

dataframe.drop(labels='one', axis=0, inplace=True)

print(series.isnull()) # 对应元素判断是否为空,为空返回True

print(dataframe.isnull())

print(series.notnull()) # 对应元素判断是否存在,为空返回True

print(dataframe.notnull())

五、常用函数

函数名称 描述说明
count() 统计某个非空值的数量
sum() 求和
mean() 求均值
median() 求中位数
var() 求样本方差
std() 求标准差
min() 求最小值
max() 求最大值
abs() 求绝对值
prod() 求所有数值的乘积

series = pd.Series(20, 30, 15, 20)

dataframe = pd.DataFrame(\[20, 30, 15, 20, 18, 52, 47, 33])

print(series.mean(), dataframe.mean()) # 每列的算术平均数

print(series.median(), dataframe.median()) # 每列的中位数

print(series.var(), dataframe.var()) # 每列总体方差

print(series.std(), dataframe.std()) # 每列标准差

print(series.min(), dataframe.min()) # 每列最小值

print(series.max(), dataframe.max()) # 每列最大值

print(series.sum(), dataframe.sum()) # 每列之和

print(series.count(), dataframe.count()) # 每列非零元素的个数

print(series.abs(), dataframe.abs()) # 所有元素的绝对值

print(series.prod(), dataframe.prod()) # 所有数值的乘积

相关推荐
学传打活4 天前
【边打字.边学昆仑正义文化】_进阶篇5 宇宙星系的运转(续1)
微信公众平台·1024程序员节·汉字·昆仑正义文化
fangzhanpeng16812 天前
快速掌握C#语言基础知识点(1.基础数据类型)
开发语言·c#·1024程序员节
无己心15 天前
面向多平台 AI 搜索引擎的适配层架构设计
前端·人工智能·搜索引擎·ai·1024程序员节
u01030552720 天前
AI驱动的安卓UI自动生成功能实现
人工智能·1024程序员节
u01030552721 天前
长株潭智能体赋能腾讯元器链接共享
1024程序员节
云贝贝贝22 天前
OceanBase认证体系介绍与备考指南
运维·服务器·oceanbase·1024程序员节
u01030552722 天前
Java图像处理实战指南
人工智能·1024程序员节
u01030552723 天前
Java AWT鼠标事件全解析
人工智能·1024程序员节
u01030552725 天前
Java实用类应用精讲
人工智能·1024程序员节
u0103055271 个月前
Java I/O核心操作实战
人工智能·1024程序员节