pandas库的介绍

pandas库主要是解决如何提取数据的特征,提供高性能数据分析工具;

 此库详情:http://pandas.pydata.org

引用方法:import pandas  as pd

pandas 是基于numpy库实现的,常与numpy库和matplotlib库一起使用;

import pandas as pd
d=pd.Series(range(20))  #这个函数是产生一个序列类型,其中第一列是索引,第二列是元素的值;注意大小写区别
d.cumsum()   #计算序列d中前项的累加和,其中第一列是索引,第二列是对对应位置的前n项的累加和

对pandas库的理解:,

主要是理解两个数据类型,分别是  Series 对应的是一维的数据类型,第二个数据类型是DataFrams,对应的是二维和多维;这两种是基于ndarray的扩展,其中numpy是关注数据的结构表达,而pandas更多的是扩展数据类型,关注的是数据的应用表达;体现在索引上面的应用;

基于以上数据类型的各种操作有:基本操作、运算操作、特征类操作、关联类操作;

Series数据类型,这是一种一维数据的类型,第一列为数据的索引,第二列为存储的数据,其中需要注意索引从0

开始;

以上是自动索引,

这个数据类型还有自定义索引;

方法如下:

在序列中提供两个元素,其中第一个位置为元素,第二个位置是序列的索引;

Series类型可以由如下方法创建:

1、python列表创建 (上面方法)  2、标量值创建   3、python字典创建  4、ndarray创建

标量值创建,第一个位置是标量元素,第二个位置是索引;

也可以只用字典的值,而自己另外定义其键,也就是索引:

其中索引如果位置更多,会自动创建位置,然后其值会填补成NaN;

从ndarray类型创建

import pandas as pd
import numpy as py
a=pd.Series(np.arange(20))


b=pd.Series(np.arange(5),index=np.arange(9,4,-1))

其中对Series类型,获取其索引的方法为:

b.index()  获取所有的索引    b.values()获取其所有的值,索引输出的就是一个index类型,而值输出的是一共array类型;

在索引的时候,自定义索引和自动索引同时并存,但是只能选择使用一个,混用则会报错;

索引用括号表示;注意在这个类型中可以用比较关系来表示索引

b[b>b.median()]

所索引的部分是在b中比中位数大的部分;

1、可以通过自定义索引来访问其中的内容

2、保留字 in 来获取

3、使用.get()的方法来获取其中的类型    b.get('f',100)  #判断f是否在b中,若在则返回对应值,不在则返回第二个参数100,当不存在第二个参数的时候返回空;

Series类型的对齐问题;

三维加上四维的对象,索引值相同的进行运算,不同的不进行运算

即会自动对其不同索引的值,不是看位置,当索引一个存在一个不存在的时候,叠加后返回空

name属性,Series对象和索引都可以有一个名字,存储在属性.name中;

Series对象的修改;

相当于字典对象的修改,不同的是可以同时修改多个值,如  b['a','b']=20,则同时改变了a b 对应的值

Series库的DataFrame类型,二维数据类型

DataFrame类型是由共用相同索引的一组列组成,其实就是一个表格类型,既有行索引也有列索引,行索引为index,列索引为column,常用于表示二维数据,也可以表示多维数据;

DataFrame类型可以由如下类型创建:

1.二维ndarray对象创建

2.由一维ndarray、列表、字典、元组或series构成字典

3.Series类型创建

在横向上自动生成了行索引 0 1 ;在纵向上自动生成了列索引 0 1 2 3 4  其他的为元素

 

由字典创建的时候,字典的键默认为列的自定义索引,值为行的内容

自定义索引部分内容,当不存在的时候会自动补齐,

当横向或者纵向索引不存在的时候,可以手动补齐,也可以不补齐然后系统会自动补齐;

例子
城市环比同比定基
北京101.5120.7121.4
上海101.2127.327.8
广州101.3119.2120.0
深圳102140.9145.5
沈阳100.1301.4101.4

import pandas as pd
dl={'城市':['北京','上海','广州','深圳','沈阳'],'环比':[101.5,101.2,101.3,102,100.1],
    '同比':[120.7,127.3,119.2,140.9,301.4],'定基':[121.4,127.8,120.0,145.5,101.4]}
d=pd.DataFrame(dl,index=['c1','c2','c3','c4','c5'])
print(d)

在索引的时候,会带上其编号:即c1,c2等,d['环比']直接获得一列元素

获得一行的元素:d.ix('c2')

d['环比']['c2']  可获得某个具体位置的元素

DataFrame是二维的带标签的数组

pandas的数据类型操作:

增加和重排可以使用重新索引的方法,删除使用  drop方法

重排:  .reindex(index,columns,fill_value,method,limit,copy)  能够改变和重排Series和DataFrame的索引

第一个参数定义重排的行,第二个定义重排的列,第三个用于填充缺失位置的值,method填充方法,ffill表示值向前填充,bfill向后填充,liimit表示最大填充量,copy默认True表示生成新对象,False表示不复制

   索引类型的常用方法:

.append(index)    连接另一个index对象,产生新的index对象

.diff(index) 计算差集,产生新的index对象;

.intersection(index)   计算交集

.union(index)  计算并集

.delete(loc)  删除 loc位置的元素、

.insert(loc,e)  在loc位置增加一个元素  e

.drop()  删除某行或列的元素,括号里填行或者列的索引,默认操作行的索引,当需要删除列的时候,需给出  axis=1 

d.drop('同比',axis=1)

pandas库的数据类型运算:

算术运算法则:

算术运算根据行列索引,补齐后运算,运算默认产生浮点数

补齐后缺项为NaN,即空值

二维和一维,一维和0维,会产生广播运算,即一维和0维(常数)的运算,一维元素的每一个位置都会和该常数发生运算;

二维和一维的运算,默认发生在一维,即二维元素的每一行和该一维元素的每一个位置发生运算,

采用加减乘除符号进行的二元运算产生新的对象;如果要指定每一列发生运算,则需要使用add等方法型,指定axis=0

也可使用  .add(d) ,.sub(d),  .mul(d)  ,  .div(d) 运算,分别是加减乘除

import numpy as np
import pandas as pd
a=pd.DataFrame(np.arange(12).reshape(3,4))
b=pd.DataFrame(np.arange(20).reshape(4,5))
print(a*b)#得到的结果是相同位置的元素运算,当某个位置不存在的时候补齐后运算,得到的结果是NaN

K=b.add(a,fill_value=100)#设置缺少的元素是100,即用100替换NaN
print(K)

c=pd.Series(np.arange(4))
print(c)
print(a-c)#每一行和c相应位置发生运算
b.sub(c,axis=0)#每一列和b发生运算

比较运算法则:

比较运算只比较相同索引的元素,不进行补齐     (都是二维时必须同维度尺寸相同,否则报错)

二维和一维,一维和零维进行广播运算

采用< > 等比较运算符号结果维布尔类型

数据的排序:

.sort_index()  这一方法在指定轴上根据索引进行排序,默认为升序  .sort_index(axis=0,ascending=True) 默认为横轴递增排序

.sort_value() 这一方法在指定轴上根据数值进行排序,默认是升序

Series.sort_value(anxis=0,ascending=True)

DataFrame.sort_value(by,axis=0,ascending=True)  by 指的是axis轴上某个索引或者索引列表

对NaN统一放到排序的末尾,因此不管从小到大还是从大到小,都是放在排序的末尾

import pandas as pd
import numpy as np
b=pd.DataFrame(np.arange(20).reshape(4,5),index=['c','a','d','b'])
c=b.sort_value(2,ascending=False)  #指定默认的横轴上即纵向的第二列按从大到小排列
d=c.index_value('a',axis=1)#在设定的纵向上即横轴对’a'这一行按从小到大排列

基本统计分析:

对一维series类型

                                                         

                                                        

                                                        

其中describe方法可以得出所有 的统计分析的值

import pandas as pd
a=pd.Series([9,8,7,6],index=['a','b','c','d'])
b=a.describe()
print(b)

output:
count    4.000000
mean     7.500000
std      1.290994
min      6.000000
25%      6.750000
50%      7.500000
75%      8.250000
max      9.000000
dtype: float64
#得出的结果是Series类型,因此可以用Series的索引方法取其中的值

对二维DataFrame类型:

此时的统计值是按照0轴方向,即计算每一列的统计信息,describe的几个是一个横向索引为统计值,纵向为序号索引;

数据的累计统计分析:

可以在1~n上 的数据累计统计计算,减少for循环的使用

                                                   

每个位置的数都是在纵向上,这一列上该位置以及之前位置所有元素的统计值

适用于pandas里面两种数据类型的滚动计算,

                                          

第一行由于前面没有元素,其前面的值被补充为NaN;   所谓相邻是该位置以及其之前一个w各数据;

    a.cov(b)  计算a和b之间的 协方差 矩阵

   a.corr(b)计算相关性矩阵                                                               

 

 

同时pandas库也可以绘图:Series.plot()绘图的时候是将其0轴的索引为x轴,其对应的索引值为y轴绘图

DataFrame.plot()则是对每一列元素为y轴,0轴索引为x轴绘出每一列的图像

 

Pandas是一个Python的核心数据分析,它提供了快速、灵活、明确的数据结构,能够简单、直观、快速地处理各种类型的数据。Pandas名字来源于术语"panel data"(面板数据)和"Python data analysis"(Python数据分析)。Pandas提供了两个主要的数据结构类,分别是Series(一维)和DataFrame(二维)。它们可以处理金融、统计、社会科学、工程等领域里的大多数典型案例。Pandas是基于NumPy开发的,可以与其他第三方科学计算完美集成。总的来说,Pandas是一个功能强大且易于使用的数据分析工具,被广泛应用于各种数据处理和分析任务中。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【pandas】](https://blog.csdn.net/zhurrm/article/details/121575808)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Python数据分析与处理---Pandas介绍](https://blog.csdn.net/VN520/article/details/129120364)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zero _s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值