您的位置:

python自带pandas吗,python pandas用法

本文目录一览:

python--pandas合并与连接

append 方法根据行在原数据框添加新的数据框。

如果想要合并后的数据框索引重写排序,可以设置参数 ignore_index=True 。

concat 函数是panda自带的,可以按行或按列合并多个pandas数据框。

按行合并多个数据框,需要注意的是 objs参数接受一个可迭代对象 。concat函数默认按行合并。

设置 ignore_index=True ,使合并后的数据框索引重新排序。

按行合并时,concat对所有的列进行全连接(参数 join='outer' ),没有的列会填充为NaN。

设置参数 join='inner' ,可以只保留共有的列。

设置参数 axis=1 或 axis='columns' ,可以按列合并多个数据框。

merge 方法根据列或索引连接数据框。

当两个数据框只有一个相同列时, merge 方法会自动根据相同列进行内连接, on 参数可以省略。

设置参数 how=['left','right','outer','inner','cross'] ,可以完成不同类型的连接。

当两个数据框没有相同列时,需要设置 left_on 和 right_on 参数,表示按这两列进行连接。

如果需要根据数据框的索引进行连接,需要根据需求设置参数 left_index=True 或者 right_index=True 。

设置 suffixes ,可以给相同的列名添加后缀。默认后缀是 _x , _y 。

join 方法与 merge 方法作用相同,基本上 merge 方法已经可以完成所有的连接操作。

join 方法对按索引连接更方便而已。

当连接的两个数据框中没有相同列时,可以直接按索引进行左连接。

同样,可以设置 how 参数,控制连接的行为。

当数据框中有相同列时,需要设置后缀。

python自带及pandas、numpy数据结构(一)

1.python自带数据结构:序列(如list)、映射(如字典)、集合(set)。

以下只介绍序列中的list:

创建list:

list1 = []

list1 = [1,2,3,4,5,6,7,8,9] #逗号隔开

list2 = [[1,2],[3,4],[5,6],[7,8]] #list2长度(len(list2))为2,list2[0] = [1,2]

liststring = list(“thisisalist”) #只用于创建字符串列表

索引list:

e = list1[0] #下标从零开始,用中括号

分片list:

es = list1[0:3]

es = list1[0:9:2] #步长在第二个冒号后

list拼接(list1.append(obj)、加运算及乘运算):

list长度:

list每个元素乘一个数值:

list2 = numpy.dot(list2,2)

list类似矩阵相乘(每个元素对应相乘取和):

list3 = numpy.dot(list1,list1)

#要求相乘的两个list长度相同

list3 = numpy.dot(list2,list22)

#要求numpy.shape(list2)和numpy.shape(list22)满足“左行等于右列”的矩阵相乘条件,相乘结果numpy.shape(list3)满足“左列右行”

2.numpy数据结构:

Array:

产生array:

data=np.array([[1, 9, 6], [2, 8, 5], [3, 7, 4]])

data=np.array(list1)

data1 = np.zeros(5) #data1.shape = (5,),5列

data1 = np.eye(5)

索引array:

datacut = data[0,2] #取第零行第二列,此处是6

切片array:

datacut = data[0:2,2] # array([6, 5])

array长度:

data.shape

data.size

np.shape(data)

np.size(data)

len(data)

array拼接:

#括号内也有一个括号(中括号或者小括号)!

d = np.concatenate((data,data))

d = np.concatenate((data,data),axis = 1) #对应行拼接

array加法:逐个相加

array乘法:

d = data data #逐个相乘

d = np.dot(data,data) #矩阵相乘

d = data 3 #每个元素乘3

d = np.dot(data,3) #每个元素乘3

array矩阵运算:

取逆 : np.linalg.inv(data)

转置:data.T

所有元素求和 : np.sum(data)

生成随机数:np.random.normal(loc=0, scale=10, size=None)

生成标准正态分布随机数组:np.random.normal(size=(4,4))

生成二维随机数组:

np.random.multivariate_normal([0,0],np.eye(2))

生成范围在0到1之间的随机矩阵(M,N):

np.random.randint(0,2,(M,N))

Matrix:

创建matrix:

mat1 = np.mat([[1, 2, 3], [4, 5, 6]])

mat1 = np.mat(list)

mat1 = np.mat(data)

matrix是二维的,所有+,-,*都是矩阵操作。

matrix索引和分列:

mat1[0:2,1]

matrix转置:

np.transpose(mat1)

mat1.transpose()

matrix拼接:

np.concatenate([mat1,mat1])

np.concatenate([mat1,mat1],axis = 1)

numpy数据结构总结:对于numpy中的数据结构的操作方法基本相同:

创建:np.mat(list),np.array(list)

矩阵乘:np.dot(x,y)

转置:x.T or np.transpose(x)

拼接:np.concatenate([x,y],axis = 1)

索引:mat[0:1,4],ary[0:1,4]

3.pandas数据结构:

Series:

创建series:

s = pd.Series([[1,2,3],[4,5,6]],index = [‘a’,‘b’])

索引series:

s1 = s[‘b’]

拼接series:

pd.concat([s1,s1],axis = 1) #也可使用s.append(s)

DataFrame:

创建DaraFrame:

df = pd.DataFrame([[1,2,3],[1,2,3]],index = ['a','b'],columns = ['x','y','z'])

df取某一列:

dfc1 =df.x

dfc1 = df[‘x’]

dfc2 = df.iloc[:,0] #用.iloc方括号里是数字而不是column名!

dfc2 = df.iloc[:,0:3]

df取某一行:

dfr1 = df.iloc[0]

df1 = df.iloc[0:2]

df1 = df[0:2] #这种方法只能用于取一个区间

df取某个值:

dfc2 = df.iloc[0,0]

dfc2 = df.iloc[0:2,0:3]

Python数据分析库有哪些

Python数据分析必备的第三方库:

1、Pandas

Pandas是Python强大、灵活的数据分析和探索工具,包含Serise、DataFrame等高级数据结构和工具,安装Pandas可使Python中处理数据非常快速和简单。

Pandas是Python的一个数据分析包,Pandas最初使用用作金融数据分析工具而开发出来,因此Pandas为时间序列分析提供了很好的支持。

Pandas是为了解决数据分析任务而创建的,Pandas纳入了大量的库和一些标准的数据模型,提供了高效的操作大型数据集所需要的工具。Pandas提供了大量是我们快速便捷的处理数据的函数和方法。Pandas包含了高级数据结构,以及让数据分析变得快速、简单的工具。

2、Numpy

Numpy可以提供数组支持以及相应的高效处理函数,是Python数据分析的基础,也是Scipy、Pandas等数据处理和科学计算库最基本的函数功能库,且其数据类型对Python数据分析十分有用。

Numpy提供了两种基本的对象:ndarray和ufunc。ndarray是存储单一数据类型的多维数组,而ufunc是能够对数组进行处理的函数。

3、Matplotlib

Matplotlib是强大的数据可视化工具和作图库,是主要用于绘制数据图表的Python库,提供了绘制各类可视化图形的命令字库、简单的接口,可以方便用户轻松掌握图形的格式,绘制各类可视化图形。

Matplotlib是Python的一个可视化模块,他能方便的只做线条图、饼图、柱状图以及其他专业图形。

Matplotlib是基于Numpy的一套Python包,这个包提供了丰富的数据绘图工具,主要用于绘制一些统计图形。

4、SciPy

SciPy是一组专门解决科学计算中各种标准问题域的包的集合,包含的功能有最优化、线性代数、积分、插值、拟合、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算等,这些对数据分析和挖掘十分有用。

SciPy是一款方便、易于使用、专门为科学和工程设计的Python包,它包括统计、优化、整合、线性代数模块、傅里叶变换、信号和图像处理、常微分方程求解器等。Scipy依赖于Numpy,并提供许多对用户友好的和有效的数值例程,如数值积分和优化。

5、Keras

Keras是深度学习库,人工神经网络和深度学习模型,基于Theano之上,依赖于Numpy和Scipy,利用它可以搭建普通的神经网络和各种深度学习模型,如语言处理、图像识别、自编码器、循环神经网络、递归审计网络、卷积神经网络等。

6、Scrapy

Scrapy是专门为爬虫而生的工具,具有URL读取、HTML解析、存储数据等功能,可以使用Twisted异步网络库来处理网络通讯,架构清晰,且包含了各种中间件接口,可以灵活的完成各种需求。

7、Gensim

Gensim是用来做文本主题模型的库,常用于处理语言方面的任务,支持TF-IDF、LSA、LDA和Word2Vec在内的多种主题模型算法,支持流式训练,并提供了诸如相似度计算、信息检索等一些常用任务的API接口。

Python数据分析: 初识Pandas,理解Pandas实现和原理

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

01 重要的前言

这段时间和一些做数据分析的同学闲聊,我发现数据分析技能入门阶段存在一个普遍性的问题,很多凭着兴趣入坑的同学,都能够很快熟悉Python基础语法,然后不约而同的一头扎进《利用Python进行数据分析》这本经典之中,硬着头皮啃完之后,好像自己什么都会了一点,然而实际操作起来既不知从何操起,又漏洞百出。

至于原因嘛,理解不够,实践不够是两条老牌的拦路虎,只能靠自己来克服。还有一个非常有意思且经常被忽视的因素——陷入举三反一的懵逼状态。

什么意思呢?假如我是个旱鸭子,想去学游泳,教练很认真的给我剖析了蛙泳的动作,扶着我的腰让我在水里划拉了5分钟,接着马上给我讲解了蝶泳,又是划拉了5分钟,然后又硬塞给我潜泳的姿势,依然是划拉5分钟。最后,教练一下子把我丢进踩不到底的泳池,给我呐喊助威。

作为一个还没入门的旱鸭子,教练倾囊授了我3种游泳技巧,让我分别实践了5分钟。这样做的结果就是我哪一种游泳技巧也没学会,只学会了喝水。当一个初学者一开始就陷入针对单个问题的多种解决方法,而每一种方法的实践又浅尝辄止,在面对具体问题时往往会手忙脚乱。

拿Pandas来说,它的多种构造方式,多种索引方式以及类似效果的多种实现方法,很容易把初学者打入举三反一的懵逼状态。所以,尽量避开这个坑也是我写Pandas基础系列的初衷,希望通过梳理和精简知识点的方式,给需要的同学一些启发。目前暂定整个基础系列分为4篇,基础篇过后便是有趣的实战篇。

下面开始进入正题(我真是太唠叨了)。

02 Pandas简介

江湖上流传着这么一句话——分析不识潘大师(PANDAS),纵是老手也枉然。

Pandas是基于Numpy的专业数据分析工具,可以灵活高效的处理各种数据集,也是我们后期分析案例的神器。它提供了两种类型的数据结构,分别是DataFrame和Series,我们可以简单粗暴的把DataFrame理解为Excel里面的一张表,而Series就是表中的某一列,后面学习和用到的所有Pandas骚操作,都是基于这些表和列进行的操作(关于Pandas和Excel的形象关系,这里推荐我的好朋友张俊红写的《对比EXCEL,轻松学习Python数据分析》)。

这里有一点需要强调,Pandas和Excel、SQL相比,只是调用和处理数据的方式变了,核心都是对源数据进行一系列的处理,在正式处理之前,更重要的是谋定而后动,明确分析的意义,理清分析思路之后再处理和分析数据,往往事半功倍。

03 创建、读取和存储

1、创建

在Pandas中我们想要构造下面这一张表应该如何操作呢?

别忘了,第一步一定是先导入我们的库——import pandas as pd

构造DataFrame最常用的方式是字典+列表,语句很简单,先是字典外括,然后依次打出每一列标题及其对应的列值(此处一定要用列表),这里列的顺序并不重要:

左边是jupyter notebook中dataframe的样子,如果对应到excel中,他就是右边表格的样子,通过改变columns,index和values的值来控制数据。

PS,如果我们在创建时不指定index,系统会自动生成从0开始的索引。

2、 读取

更多时候,我们是把相关文件数据直接读进PANDAS中进行操作,这里介绍两种非常接近的读取方式,一种是CSV格式的文件,一种是EXCEL格式(.xlsx和xls后缀)的文件。

读取csv文件:

engine是使用的分析引擎,读取csv文件一般指定python避免中文和编码造成的报错。而读取Excel文件,则是一样的味道:

非常easy,其实read_csv和read_excel还有一些参数,比如header、sep、names等,大家可以做额外了解。实践中数据源的格式一般都是比较规整的,更多情况是直接读取。

3、存储

存储起来一样非常简单粗暴且相似:

04 快速认识数据

这里以我们的案例数据为例,迅速熟悉查看N行,数据格式概览以及基础统计数据。

1、查看数据,掐头看尾

很多时候我们想要对数据内容做一个总览,用df.head()函数直接可以查看默认的前5行,与之对应,df.tail()就可以查看数据尾部的5行数据,这两个参数内可以传入一个数值来控制查看的行数,例如df.head(10)表示查看前10行数据。

2、 格式查看

df.info()帮助我们一步摸清各列数据的类型,以及缺失情况:

从上面直接可以知道数据集的行列数,数据集的大小,每一列的数据类型,以及有多少条非空数据。

3、统计信息概览

快速计算数值型数据的关键统计指标,像平均数、中位数、标准差等等。

我们本来有5列数据,为什么返回结果只有两列?那是因为这个操作只针对数值型的列。其中count是统计每一列的有多少个非空数值,mean、std、min、max对应的分别是该列的均值、标准差、最小值和最大值,25%、50%、75%对应的则是分位数。

05 列的基本处理方式

这里,我们采用SQL四大法宝的逻辑来简单梳理针对列的基本处理方式——增、删、选、改。

温馨提示:使用Pandas时,尽量避免用行或者EXCEL操作单元格的思维来处理数据,要逐渐养成一种列向思维,每一列是同宗同源,处理起来是嗖嗖的快。

1、增

增加一列,用df[‘新列名’] = 新列值的形式,在原数据基础上赋值即可:

2、删:

我们用drop函数制定删除对应的列,axis = 1表示针对列的操作,inplace为True,则直接在源数据上进行修改,否则源数据会保持原样。

3、选:

想要选取某一列怎么办?df[‘列名’]即可:

选取多列呢?需要用列表来传递:df[[‘第一列’,‘第二列’,‘第三列’…]]

4、 改:

好事多磨,复杂的针对特定条件和行列的筛选、修改,放在后面结合案例细讲,这里只讲一下最简单的更改:df[‘旧列名’] = 某个值或者某列值,就完成了对原列数值的修改。

06 常用数据类型及操作

1、字符串

字符串类型是最常用的格式之一了,Pandas中字符串的操作和原生字符串操作几乎一毛一样,唯一不同的是需要在操作前加上".str"。

小Z温馨提示:我们最初用df2.info()查看数据类型时,非数值型的列都返回的是object格式,和str类型深层机制上的区别就不展开了,在常规实际应用中,我们可以先理解为object对应的就是str格式,int64对应的就是int格式,float64对应的就是float格式即可。

在案例数据中,我们发现来源明细那一列,可能是系统导出的历史遗留问题,每一个字符串前面都有一个“-”符号,又丑又无用,所以把他给拿掉:

一般来说清洗之后的列是要替换掉原来列的:

2、 数值型

数值型数据,常见的操作是计算,分为与单个值的运算,长度相等列的运算。

以案例数据为例,源数据访客数我们是知道的,现在想把所有渠道的访客都加上10000,怎么操作呢?

只需要选中访客数所在列,然后加上10000即可,pandas自动将10000和每一行数值相加,针对单个值的其他运算(减乘除)也是如此。

列之间的运算语句也非常简洁。源数据是包含了访客数、转化率和客单价,而实际工作中我们对每个渠道贡献的销售额更感兴趣。(销售额 = 访客数 X 转化率 X 客单价)

对应操作语句:df[‘销售额’] = df[‘访客数’] * df[‘转化率’] * df[‘客单价’]

但为什么疯狂报错?

导致报错的原因,是数值型数据和非数值型数据相互计算导致的。PANDAS把带“%”符号的转化率识别成字符串类型,我们需要先拿掉百分号,再将这一列转化为浮点型数据:

要注意的是,这样操作,把9.98%变成了9.98,所以我们还需要让支付转化率除以100,来还原百分数的真实数值:

然后,再用三个指标相乘计算销售额:

3、时间类型

PANDAS中时间序列相关的水非常深,这里只对日常中最基础的时间格式进行讲解,对时间序列感兴趣的同学可以自行查阅相关资料,深入了解。

以案例数据为例,我们这些渠道数据,是在2019年8月2日提取的,后面可能涉及到其他日期的渠道数据,所以需要加一列时间予以区分,在EXCEL中常用的时间格式是’2019-8-3’或者’2019/8/3’,我们用PANDAS来实现一下:

在实际业务中,一些时候PANDAS会把文件中日期格式的字段读取为字符串格式,这里我们先把字符串’2019-8-3’赋值给新增的日期列,然后用to_datetime()函数将字符串类型转换成时间格式:

转换成时间格式(这里是datetime64)之后,我们可以用处理时间的思路高效处理这些数据,比如,我现在想知道提取数据这一天离年末还有多少天(‘2019-12-31’),直接做减法(该函数接受时间格式的字符串序列,也接受单个字符串):

python如何下载pandas

pandas是一个开源的python库,其强大的数据结构提供高性能数据操作和分析工具

利用pip安装pandas

1、在cmd窗口输入pip install pandas

2、在编辑器中输入import pandas 看看会不会报错,如不报错则安装成功