设为首页 加入收藏

TOP

03-Pandas详解(一)
2023-07-25 21:25:41 】 浏览:53
Tags:03-Pandas 详解

Pandas

Pandas的主要功能

  • 具备对其功能的数据结构DataFrame、Series
  • 集成时间序列功能
  • 提供丰富的数学运算和操作
  • 灵活处理缺失数据

Series

Series介绍:Series是一种类似于一维数组的对象,由一组数据和一组与之相关的数据标签(索引)组成,比较像列表和字典的结合体
Series创建方式:

# 普通创建
pd.Series([1,2,3,4])
# 带索引创建
pd.Series([1,2,3,4],index=['a','b','c','d']) #但是我们依旧可以通过[0]来访问到数据,有两种访问方法,并没有被真正覆盖掉
# 使用字典创建
pd.Series({'a':1,'b':2})

Series使用特性

Series支持array特性 Series支持字典特性
从ndarray创建Series:Series(arr) 从字典创建Series,Series(dic)
与标量运算sr*2 in运算:'a' in str
两个Series运算:sr1+sr2 键索引:s['a']、s[['a'、'b']]
索引:sr[0],s[[1,2,4]]
切片:sr[0:2]
通用函数:np.abs(sr)
布尔值过滤:sr[sr>0]

01-常用函数

# 获取索引值
sr.index
# 获取值
sr.values
# 根据标签花式索引
sr[['a','b']]
# 根据标签切片
sr['a','b']

Sr整数索引问题
在对Series进行切片处理时,可能会出现整数访问的问题

import pandas as pd
import numpy as np
sr = pd.Series(np.arange(20))
sr2 = sr[10:].copy()
sr2[10] # 可以正常访问
sr2[0] # 无法正常访问
# 如何解决整数索引的问题
# 通过标签选择 [[1,13,14],[10,11,12]]
sr2.loc[10] #结果为1
# 通过下标选择
src.iloc[10] #选择失败,下标越界
src.iloc[0] #结果为1

02-数据对齐

在Series中,是按照索引对齐的,两个Series对象是按照索引对齐然后计算的。

sr1 = pd.Series([11,12,13],['a','c','d'])
sr2 = pd.Series([14,15,21],['c','a','d'])
sr1 + sr2
# 如果一个索引有,另外一个索引没有,那么就会出现NaN的结果
# 缺失值处理
sr1.add(sr2,fill_value=0)

运行结果如下

a    26
c    26
d    34
dtype: int64


DataFrame

DataFrame:DataFrame是一个表格型数据结构,含有一组有序的列.DataFrame可以被看作是Series组成的字典,并且共用一个索引。
创建DataFrame:
先创建一个基础的DataFrame

test1 = pd.DataFrame({'one':[1,2,3],'two':[4,5,6]},index=['a','b','c'])
test1
# 或者也可以用以下格式,体现Pandas将字典转化为dataframe
import pandas as pd
data = {"name":["yahoo","google","facebook"],"marks":[200,400,800],"price":[9,3,7]}
dataframe1 = pd.DataFrame(data,index=['one','two','three'])
dataframe1

创建出的DataFrame对象如下
image.png
以及如下:image.png
再通过Series创建一个DataFrame

test2 = pd.DataFrame({'one':pd.Series([1,2,3],index=['a','b','c']),'two':pd.Series([1,2,3,4],index=['a','b','c','d'])})

创建出的DataFrame对象如下
image.png
DataFrame读取CSV文件

# 读取csv文件
df = pd.read_csv('test.csv')
# 保存csv文件
df.to_csv("文件名.csv")

01-常用属性

DataFrame常用属性

属性值 属性作用
index 获取索引
T 转置
columns 获取列索引
values 获取值索引
describe() 获取快速统计

02-索引与切片

# 根据索引名索引
df['列']['行'] #注意顺序不能反了
# 通过标签形式访问
df.loc['行','列']
# 通过标签方式访问某几行
df.loc[['a','c'],:]

03-数据对齐

DataFrame行列在进行数据对齐的时候,其行索引和列索引分别对齐

04-缺失值处理

DataFrame在处理缺失值的时候与Series有相像的地方,但是在使用dropna()时候,会删除这一行。
所以我们需要一个函数,当这一行全为NaN时候,我们再删除它

# 当一行全为缺失值时,进行删除
test2.dropna(how='all')
# 当一行只要有一个缺失值时,删除
test2.dropna(how='any')
# 当一列只要有一个缺失值是,删除
test2.dropna(axis=1,how='any') #默认axis=0,按行删除,修改axis=1,按列删除

05-常用函数

# 对列(行)求平均值 mean(axis=0,skipna=False)
df.mean() #默认按照列求缺失数据
df.mean(axis=1) #按照行求缺失数据
# 对列(行)求和
df.sum()  #默认按照列求缺失数据
df.sum(axis=1) #按照行求缺失数据
# 对列(行)索引排序,有NAN的部分不参与排序,放到最后
df.sort_values(by='列名') #按照某列升序排列
df.sort_values(by='列名',ascending=False) #按照某列降序排列
df.sort_values(by='行名',axis=1) #按照某行升序排列
df.sort_values(by='行名',axis=1,ascending=False) #按照某行降序排列
# 按某一列(行)索引排序
df.sort_index() #按照行索引升序排序
df.sort_index(ascending=False) #按照列索引降序排序

时间序列

01-时间对象

  • Python标准库处理时间对象:datetime
  • 灵活处理时间对象:dateutil
  • 成组处理时间对象:pandas:pd.to_datetime()

时间对象转换代码

# 初步的时间对象转换
import datetime
datetime.datetime.strptime('2023-02-06','%Y-%m-%d')
# 忽略
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python 内置界面开发框架 Tkinter.. 下一篇使用Python实现多线程、多进程、..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目