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()) # 所有数值的乘积

相关推荐
学传打活1 天前
【边打字.边学昆仑正义文化】_25_宇宙动植物的由来(1)
微信公众平台·1024程序员节·汉字·昆仑正义文化
开开心心就好5 天前
用户推荐的文件解锁与强制操作工具
安全·智能手机·pdf·scala·音视频·symfony·1024程序员节
liguojun202511 天前
软硬一体智慧场馆系统推荐——助力场馆数字化高效升级
java·大数据·人工智能·物联网·1024程序员节
开开心心就好22 天前
吾爱大佬原创的文件时间修改工具
安全·智能手机·pdf·电脑·智能音箱·智能手表·1024程序员节
开开心心就好1 个月前
近200个工具的电脑故障修复合集
安全·智能手机·pdf·电脑·consul·memcache·1024程序员节
数据皮皮侠AI1 个月前
中国城市可再生能源数据集(2005-2021)|顶刊 Sci Data 11 种能源面板
大数据·人工智能·笔记·能源·1024程序员节
计算机毕业论文辅导1 个月前
物联网实战:基于MQTT协议的智能家居数据传输系统设计与实现
1024程序员节
开开心心就好1 个月前
支持批量处理的视频分割工具推荐
安全·智能手机·rust·pdf·电脑·1024程序员节·lavarel
liuyao_xianhui1 个月前
Linux开发工具结尾 _make
linux·运维·服务器·数据结构·哈希算法·宽度优先·1024程序员节
学传打活1 个月前
【边打字.边学昆仑正义文化】_21_爱的结晶(1)
微信公众平台·1024程序员节·汉字·昆仑正义文化