Pandas是python第三方库,提供高性能易用数据类型和分析工具。Pandas基于NumPy实现,常与NumPy和Matplotlib一同使用。pandas库引用: import pandas as pd

包括两个数据类型:Series(相当于一维数据类型),DataFrame(相当于二维-多维数据类型),构成pandas的基础。进行基本操作、运算操作、特征类操作(提取数据特征)、关联类操作(挖掘数据关联关系)

Series类型 = 索引 + 一维数据

Series类型由一组数据及与之相关的数据索引组成。(数据和索引的对应关系)是一维带“标签”的数组,

Series类型索引

自动索引/自定义索引(index=[])pd.Series([ ],index=[ ]),index一词可省略,但index里的‘’不能省

Series类型创建  

pd.Series([6,7,8])  pd.Series(25,index=['a','b','c'])   pd.Series({'a':8,'b':9})  pd.Series(np.arange(5))

 

Series类型的基本操作  

包括b.index和b.values两部分,索引、切片、运算

类似ndarray类型,索引切片,运算

似python字典类型,in,.get()方法

Series类型的对齐操作

Series类型有索引,是基于索引的计算,更精确不易出错;numpy是基于维度的计算。

Series类型的name属性 

Series对象和索引都可以有一个名字,存储在属性.name中。b.name=' '    b.index.name=' '

Series类型的修改

Series对象可以随时修改并即刻生效。b[' '] = 15    b[' ',' '] = 15

DataFrame类型 = 行列索引 + 二维数据

DataFrame是二维带“标签”数组,基本操作类似Series,依据行列索引获得。多列数据共用1列索引。

DataFrame是一个表格型的数据类型,每列值类型可不同。有行索引,也有列索引。常用于表达二维数据,也可表达多维数据。

axis=1 :数组的变化为横向,体现出的增加或者减少。当axis=0时,数组的变化是纵向的,体现出的增加或减少。 

DataFrame类型的创建   

二维ndarray对象创建

两个一维Series创建,以字典形式组织,字典的键即为列索引,从左到右—从上到下排列下来。

 dl = {'城市':['北京','上海','广州','深圳','沈阳'],
'环比':[101.5,101.2,101.3,102.0,100.1],
'同比':[120.7,127.3,119.4,140.9,101.4],
'定基':[121.4,127.8,120.0,145.5,101.6]}

d = pd.DataFrame(dl)   #d = pd.DataFrame(dl,index=['c1','c2','c3','c4','c5'])
d
Out[43]: 
   城市     环比     同比     定基
0  北京  101.5  120.7  121.4
1  上海  101.2  127.3  127.8
2  广州  101.3  119.4  120.0
3  深圳  102.0  140.9  145.5
4  沈阳  100.1  101.4  101.6
import pandas as pd

dl = {'城市':pd.Series(['北京','上海','广州','深圳','沈阳']),
'环比':pd.Series([101.5,101.2,101.3,102.0,100.1]),
'同比':pd.Series([120.7,127.3,119.4,140.9,101.4]),
'定基':pd.Series([121.4,127.8,120.0,145.5,101.6])}
#'环比':pd.Series([101.5,101.2,101.3,102.0,100.1],index=['c1','c2','c3','c4','c5']),

pd.DataFrame(dl)   

Out[51]: 
   城市     环比     同比     定基
0  北京  101.5  120.7  121.4
1  上海  101.2  127.3  127.8
2  广州  101.3  119.4  120.0
3  深圳  102.0  140.9  145.5
4  沈阳  100.1  101.4  101.6

Pandas库的数据类型操作

如何改变Series和DataFrame对象?          增加或重排:重新索引      删除:drop

.reindex( )能够改变或重排Series和DataFrame索引

 .drop( )能够删除Series和DataFrame指定行或列索引  d.drop('c5')—删除c5行,d.drop('同比',axis=1)—删除'同比'列

Pandas库的数据类型运算

算数运算

 

 

 

 

 比较运算

只能比较相同索引的元素,不进行补齐;二维和一维、一维和零维间为广播运算;> < >= <= == !=等二元运算产生布尔对象

 

Pandas的数据特征分析

数据的排序  .sort_index( )/.sort_values( )

pandas库既可以操作索引,又可以操作数据。数据的排序,Pandas提供了两种方法。

.sort_index( )方法在指定轴上根据索引进行排序,默认升序。

.sort_index(axis=0,ascending=True)    ascending=True表示递增排序

.sort_values( )方法在指定轴上  根据数值进行排序,默认升序。

.sort_values(索引,axis=0/1,ascending=True/False)   索引必须有,默认0轴,默认升序

!对数值进行排序,直接标明列索引/标明行索引+axis=1

NaN统一放到排序末尾 

数据的基本统计分析 .describe( )

 

对于DataFrame格式的,要获取整行的信息或者对行进行排列,需行标签外还需要其他,如axis=1,ix 

数据的累计统计分析  .cum*( )/.rolling( ).*( )

 

数据的相关分析  .corr( )/.cov( )

相关分析:两个事物,表示为X和Y,如何判断它们之间的存在相关性?

相关性:X增大,Y增大,两个变量正相关; X增大,Y减小,两个变量负相关;  X增大,Y无视(无明显变化),两个变量不相关。      ——基础的描述,如何度量???

 

 实例:房价增幅与M2增幅的相关性

import pandas as pd

hprice = pd.Series([3.04,22.93,12.75,22.6,12.33],index=['2008','2009','2010','2011','2012'])

m2 = pd.Series([8.18,13.18,9.13,7.82,6.69],index=['2008','2009','2010','2011','2012'])

hprice.corr(m2)
Out[21]: 0.48136149747121026

pandas读取excel数据

data = pd.read_excel(io,sheet_name='Sheet1',

header / names / index_col / usecols / squeeze=True/False / skiprows= / nrows= / skipfooter /parse_dates)

sheet_name = 1代表第2个工作表;sheet_name = 'Sheet5'代表第5个sheet;sheet_name = '红色资源'目标Sheet的名称。

sheet_name = [0, '英超射手榜', 'Sheet4'],组合列表,读取三个工作表:第1个工作表、名为“英超射手榜”工作表、第4个工作表。

header, 用哪一行作列名:默认为0 ,如果header = [0,1],则表示将前两行作为多重索引。

names, 自定义最终列名,适用于Excel缺少列名,或需重新定义列名,names的长度须和Excel列长度一致,否则会报错。

index_col, 用作索引的列,如index_col = '排名';整型或整型列表,如index_col = 0 或 [0, 1],选择多个列,则返回多重索引。

usecols,需要读取哪些列,usecols = [0,2,3];usecols = 'A:C, E';

squeeze,当数据仅包含一列,squeeze为True返回Series,反之返回DataFrame  (print(type(data))可查看是Series/DataFrame)

skiprows,跳过特定行,skiprows= n,跳过前n行; skiprows = [a, b, c],跳过第a+1,b+1,c+1行(索引从0开始);可能首行(即列名)也会被跳过。

nrows ,需要读取的行数,如果只想了解Excel的列名及概况,不必读取全量数据,nrows会十分有用。 nrows = 10

skipfooter , 跳过末尾n行,skipfooter = 43

parse_dates:将csv中的时间字符串转换成日期格式

import pandas as pd
io = r'C:\Users\木头目\Desktop\1.xls'
data = pd.read_excel(io,sheet_name='Sheet1',header=[0,1])
print(data.head())
       地点                  起始坐标                  终点坐标
0     红军树  108.703668,29.241944  106.550483,29.563707
1   黔江纪念碑  108.773174,29.664914  106.550483,29.563707
2  马喇湖纪念碑  108.867973,29.307534  106.550483,29.563707
3  水车坪纪念地  108.872107,29.306239  106.550483,29.563707
4    万涛故居  108.798008,29.398731  106.550483,29.563707

原文链接:https://blog.csdn.net/weixin_38546295/article/details/83537558

pandas去重神器:df.drop_duplicates()

a = data.groupby(['User_ID','Gender']):对数据data(DataFrame结构)按’User_ID’和’Gender’分组

python-把excel里面的数据存储到矩阵中

读取excel/csv文件数据后,在训练模型之前常要对数据进行数组转化。(将DataFrame的表格类型转为ndarray的数组类型

注:.as_matrix()方法将会在未来版本移除,请使用 .values。

import pandas as pd  #导入pandas库

df = pd.read_excel("data.xlsx") # 读取excle

#以下方法等价

array1 = df.values  #方法一

array2 = df.as_matrix()  #方法二  注意:此方法将会在未来版本移除,请使用 .values

array3 = np.array(df)  #方法三

Dataframe指定列转化为矩阵matrix、数组list 

import numpy as np
import pandas as pd
 
#创建数据框data
data=pd.DataFrame(np.arange(16).reshape(4,4),index=list('ABCD'),columns=list('EFGH'))
print(type(data))
print(data)
#将所有数据输出为矩阵
data1 = data.values
print(type(data1))
print(data1)
#将指定列输出为矩阵
data2 = data[['E','F']].values
print(type(data2))
print(data2)

#将制定列输出为数组
data3 = data['E'].tolist()
print(type(data3))
print(data3)
<class 'pandas.core.frame.DataFrame'>
    E   F   G   H
A   0   1   2   3
B   4   5   6   7
C   8   9  10  11
D  12  13  14  15
<class 'numpy.ndarray'>
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
<class 'numpy.ndarray'>
[[ 0  1]
 [ 4  5]
 [ 8  9]
 [12 13]]
<class 'list'>
[0, 4, 8, 12]

List、Series 类型转换为DataFrame类型并保存为excel或csv文件

想要将数据以excel/csv文件保存,需要将其转换为DataFrame类型

y1 = pd.DataFrame(clusters) #clusters为Series数据,y1为DataFrame数据
y1.to_csv('new1.xlsx') #保存为csv文件
y1.to_excel('new1.xlsx') #保存为excel文件

来源:芒果很芒~

物联沃分享整理
物联沃-IOTWORD物联网 » Pandas库

发表评论