python学习记录(7)——Pandas数据结构

Pandas 是python的一个数据分析包。 Pandas的名称来自于面板数据(panel data)和python数据分析(data analysis)。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

数据结构

在Pandas中有两类非常重要的数据结构,即序列Series和数据框DataFrame

Series类似于numpy中的一维数组,除了通吃一维数组可用的函数或方法,而且其可通过索引标签的方式获取数据,还具有索引的自动对齐功能;

DataFrame类似于numpy中的二维数组,同样可以通用numpy数组的函数和方法,而且还具有其他灵活应用。

例行地导入:

import pandas as pd
from pandas import Series, DataFrame

序列(Series)

series是一个像数组一样的一维序列,并伴有一个数组表示下标,叫做index。
还可以把它看作一个长度固定,有顺序的dict,从index映射到value。在很多场景下,可以当做dict来用。

创建序列

使用pd.Series函数

  1. 用列表
obj = pd.Series([4,7,-5,3])		#不指定下标
obj

0    4
1    7
2   -5
3    3
dtype: int64
  1. 指定下标
obj2 = pd.Series([4, 7, -5, 3], index=['d','b','a','c'])  #指定下标
obj2

d    4
b    7
a   -5
c    3
dtype: int64
  1. 用字典
sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon':16000, 'Utah': 5000}
obj3 = pd.Series(sdata)
obj3

Ohio      35000
Texas     71000
Oregon    16000
Utah       5000
dtype: int64

索引

Series的左边为index,右边为对应的value

obj.values
array([ 4,  7, -5,  3], dtype=int64)

obj2.index
Index(['d', 'b', 'a', 'c'], dtype='object')

在序列中,index可以被视作索引;
即可以通过 obj2[‘d’] 的方法调用value,也可以类似numpy中用布尔值作索引,如 obj2[obj2>0]
但是注意index object是不可更改的

缺失数据、数据合并

isnull()和notnull()可以判断数据是否缺失:

obj.isnull()
pd.isnull(obj)
#两种使用方式

将两个序列用+连接可得到其合并的结果:

states = ['California', 'Ohio', 'Oregon', 'Texas']
obj4 = pd.Series(sdata, index=states)
obj3+obj4

California         NaN
Ohio           70000.0
Oregon         32000.0
Texas         142000.0
Utah               NaN
dtype: float64

name属性

series自身和它的index都有一个叫name的属性,这个能和其他pandas的函数进行整合

obj4.name = 'population'
obj4.index.name = 'state'
obj4

state
California        NaN
Ohio          35000.0
Oregon        16000.0
Texas         71000.0
Name: population, dtype: float64

数据框(DataFrame)

DataFrame表示一个长方形表格,并包含排好序的列,每一列都可以是不同的数值类型(数字,字符串,布尔值)。
DataFrame有行索引和列索引(row index, column index);可以看做是分享所有索引的由series组成的字典。数据是保存在一维以上的区块里的。

创建数据框

创建dataframe以字典为对象,字典内的值需为列表

data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'], 
        'year': [2000, 2001, 2002, 2001, 2002, 2003], 
        'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
frame = pd.DataFrame(data)
frame

   state	year    pop
0	Ohio	2000	1.5
1	Ohio	2001	1.7
2	Ohio	2002	3.6
3	Nevada	2001	2.4
4	Nevada	2002	2.9
5	Nevada	2003	3.2

使用pd.DataFrame函数时可以指定列名和index的顺序,但是如果导入一个不存在的列名,那么会显示为缺失数据:如:

frame2 = pd.DataFrame(data, columns=['year', 'state', 'pop', 'debt'], 
                      index=['one', 'two', 'three', 'four', 'five', 'six'])
frame2

        year   state	pop	debt
one	    2000    Ohio    1.5	NaN
two	    2001	Ohio	1.7	NaN
three	2002	Ohio	3.6	NaN
four	2001	Nevada	2.4	NaN
five	2002	Nevada	2.9	NaN
six	    2003	Nevada	3.2	NaN

元素为字典的字典

对于这类字典:pandas会把外层dict的key当做列,内层key当做行索引

pop = {'Nevada': {2001: 2.4, 2002: 2.9},
       'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6}}

行列操作

从DataFrame里提取一列的话会返回series格式,如frame[‘state’]。frame[column]能应对任何列名,但frame.column的情况下,列名必须是有效的python变量名才行。
从DataFrame里提取一行要用在loc属性里用 位置或名字,如:frame2.loc[‘three’]。

对行或列可以赋值,如果赋值为单个数字则是给所有列(行)赋同一个值;如果是list或array,长度必须符合数据框的长度

  1. 创建新列
    可以通过赋值创建新列,如:直接添加一个新的列名(‘eastern’)
frame2['eastern'] = frame2.state == 'Ohio'    
#动态增加列,注意=后面的是一个逻辑表达式,所以赋值是TRUE|FALSE
  1. 删除列
del frame2['eastern']
  1. 创建新行
    两种方法,分别使用append和loc属性,注意append只是创建视图,若要改动原数据框,需要进行赋值;loc属性的变动是在原数据框上
#方案一
temp={"state":'WashingtonDC',"year":2005,"pop":5,"debt":NaN}
frame2=fame2.append(temp,ignore_index=True)

#方案二
frame2.loc[len(frame2)]=['WashingtonDC',2005,5.4,NaN]
  1. 删除行(比如删除最后一行)
mydata.drop([len(mydata)-1],inplace=True)
#inplace指在原数据框上改动
  1. 转置
frame2.T
  1. 指定索引
pd.DataFrame(pop, index=[2001, 2002, 2003])
#将索引从2000,2001,2002改为了2001,2002,2003

数据框与numpy转换

  1. df.values 可以返回一个包含DataFrame基础数据的numpy数组,不带任何索引或列名。
  2. pd.DataFrame () 方法将 NumPy 数组转换为 Pandas DataFrame。

索引对象

  • pandas的Index Objects (索引对象)负责保存axis labels和其他一些数据(比如axis name或names)。一个数组或其他一个序列标签,只要被用来做构建series或DataFrame,就会被自动转变为index。
  • index object是不可更改的,所以data structure中分享index object是很安全的
  • 与python里的set不同,pandas的index可以有重复的labels,在这种重复的标签中选择的话,会选中所有相同的标签
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这篇笔记主要介绍了Pandas模块的基本操作和使用方法。PandasPython中一个用于数据分析和处理的常用库,提供了高效的数据结构和数据分析工具,是进行数据处理和数据挖掘的重要工具之一。 一、Pandas数据结构 Pandas主要有两种数据结构:Series和DataFrame。 1. Series Series是一种类似于一维数组的对象,由一组数据和一组与之相关的标签(即索引)组成。Series的创建方式如下: ```python import pandas as pd # 通过列表创建Series s = pd.Series([1, 3, 5, np.nan, 6, 8]) # 通过字典创建Series s = pd.Series({'a': 1, 'b': 2, 'c': 3}) ``` 2. DataFrame DataFrame是一种二维表格数据结构,由一组数据和一组行索引和列索引组成。DataFrame的创建方式有很多种,最常用的是通过字典创建。例如: ```python import pandas as pd data = {'name': ['Tom', 'Jerry', 'Mike'], 'age': [18, 20, 22], 'gender': ['M', 'M', 'F']} df = pd.DataFrame(data) ``` 二、Pandas的基本操作 1. 数据读取 Pandas可以读取多种格式的数据文件,如CSV、Excel、SQL等。常用的读取CSV文件的方式如下: ```python import pandas as pd df = pd.read_csv('data.csv') ``` 2. 数据预处理 数据预处理是数据挖掘中非常重要的一部分,Pandas提供了很多方便的函数和方法来进行数据清洗和转换。常用的数据预处理函数和方法有: - 处理缺失值 ```python # 判断是否存在缺失值 df.isnull() # 删除缺失值 df.dropna() # 填充缺失值 df.fillna(value) ``` - 处理重复值 ```python # 删除重复值 df.drop_duplicates() ``` - 数据转换 ```python # 数据类型转换 df.astype() # 数据替换 df.replace() ``` 3. 数据分析 Pandas提供了各种数据分析和处理的方法和函数,常用的包括: - 统计函数 ```python # 计算平均值 df.mean() # 计算标准差 df.std() # 计算最大值和最小值 df.max(), df.min() ``` - 排序 ```python # 按照某列排序 df.sort_values(by='column_name') ``` - 数据聚合 ```python # 对某列数据进行分组求和 df.groupby('column_name').sum() ``` 以上是Pandas模块的基础内容,还有很多高级用法和技巧需要进一步学习和掌握。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值