数据分析工具pandas

一、pandas的数据结构分析

Pandas中有两个主要的数据结构:SeriesDataFrame

Series是一维的数据结构,DataFrame是二维的、表格型的数据结构。

Series

Series是一个类似一维数组的对象,它能够保存任何类型的数据,主要由一组数据和与之相关的索引两部分构成。

PandasSeries类对象可以使用以下构造方法创建:

class pandas.Seriesdata = Noneindex = Nonedtype = None

name = Nonecopy = Falsefastpath = False

 data:表示传入的数据。

index:表示索引,唯一且与数据长度相等,认会自动创建一个从0~N的整数索引。

 通过传入一个列表来创建一个Series类对

# Series类对象

ser_obj = pd.Series([1, 2, 3, 4, 5])

# 创建Series类对象,并指定索引

ser_obj = pd.Series([1, 2, 3, 4, 5],

                 index=['a', 'b', 'c', 'd', 'e'])

 使用dict进行构

year_data = {2001: 17.8, 2002: 20.1, 2003: 16.5}

ser_obj2 = pd.Series(year_data)

 为了能方便地操作Series对象中的索引和数据,所以该对象提供了两个属性indexvalues分别进行获取。

# 获取ser_obj的索引

ser_obj.index

# 获取ser_obj的数据

ser_obj.values

 直接使用索引来获取数据。

# 获取位置索引3对应的数据

ser_obj[3]

DataFrame

 DataFrame是一个类似于二维数组或表格(如excel)的对象,它每列的数据可以是不同的数据类型。

Pandas的DataFrame类对象可以使用以下构造方法创建:

pandas.DataFramedata = Noneindex = Nonecolumns = None

dtype = Nonecopy = False 

 index:表示行标签。若不设置该参数,则默认会自动创建一个从0~N的整数索引。

columns:列标签。

通过入数组来DataFrame类对

# 创建数组

demo_arr = np.array([['a', 'b', 'c'],

                                    ['d', 'e', 'f']])

# 基于数组创建DataFrame对象

df_obj = pd.DataFrame(demo_arr)

 创建DataFrame类对象时如果其指定了列索引,则DataFrame的列会按照指定索引的顺序进行排

df_obj = pd.DataFrame(demo_arr, columns=['No1', 'No2', 'No3'])

 使用列索引的方式来获数据,返回的结果是一个Series象。

# 通过列索引的方式获取一列数据

element = df_obj['No2']

# 查看返回结果的类型

type(element)

 使用访问属性的方式来获数据,返回的结果是一个Series象。

# 通过属性获取列数据

element = df_obj.No2

# 查看返回结果的类型

type(element)

 DataFrame增加一列数据,则可以通过给列索引或者列名称赋值的方式实现。

# 增加No4一列数

df_obj['No4'] = ['g', 'h'

删除某一列数据,可以使用del语句实

# 删除No3一列数据

del df_obj['No3']

 二、Pandas索引操作及高级索引

Pandas中的索引都是Index类对象,又称为索引对象,该对象是不可以进行修改的,以保障数据的安全。

Pandas中提供了一个重要的方法是reindex(),该方法的作用是对原索引和新索引进行匹配,也就是说,新索引含有原索引的数据,而原索引数据按照新索引排序。(如果新索引中没有原索引数据,那么程序不仅不会报错,而且会添加新的索引,并将值填充为NaN或者使用fill_vlues()填充其他值。)

reindex()方法的语法格式如下:

DataFrame.reindexlabels = Noneindex = None

columns = Noneaxis = Nonemethod = None

copy = Truelevel = Nonefill_value = nanlimit = Nonetolerance = None 

三、算术运算与数据对齐

Pandas执行算术运算时,会先按照索引进行对齐,对齐以后再进行相应的运算,没有对齐的位置会用NaN进行补齐。

四、数据排序

Pandas中按索引排序使用的是sort_index()方法,该方法可以用行索引或者列索引进行排序。

 sort_indexaxis = 0level = Noneascending = Trueinplace = Falsekind =' quicksort 'na_position ='last'sort_remaining = True 

 按索引对Series行分别排序

ser_obj = pd.Series(range(10, 15), index=[5, 3, 1, 3, 2])

# 按索引进行升序排列

ser_obj.sort_index()

# 按索引进行降序排列

ser_obj.sort_index(ascending = False)

索引对DataFrame进行分别排序

df_obj = pd.DataFrame(np.arange(9).reshape(3, 3),

               index=[4, 3, 5])

# 按行索引升序排列

df_obj.sort_index()

# 按行索引降序排列

df_obj.sort_index(ascending=False)

 Pandas中用来按值排序的方法为sort_values(),该方法的语法格式如下。

sort_values(by,axis=0, ascending=True, inplace=False, kind='quicksort',na_position='last')

 按值的大小对Series进行排序

ser_obj = pd.Series([4, np.nan, 6, np.nan, -3, 2])

# 按值升序排列

ser_obj.sort_values()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值