• 1
  • 1
分享
  • 基于Python的大数据分析基础
  • 恬恬圈 2020-04-14 13:04:35 字数 4194 阅读 1526 收藏 1

关于Pandas

Pandas中的数据结构

(1)Series:一维数组系列,也称序列;

(2)DataFrame:二维的表格型数据结构;

(3)Panel:三维数组。

数据类型

1.Logical(逻辑型)

2. Numeric(数值型)

3. Character(字符型)

数据结构

1.Series

使用方法如下;

Series([数据1,数据2,...],index=[索引1,索引2,...])

例如:

from pandas import Series
X=Series(['a',2,'螃蟹'],index=[1,2,3])
X
X[3]#访问index=3的数据

索引号默认从0开始,也可以指定索引名。

'''
Series的index若省略,索引号从0开始
'''
from pandas import Series
A=Series([1,2,3])
print(A)
from pandas import Series
A=Series([1,2,3],index=[1,2,3])
print(A)
from pandas import Series
A=Series([1,2,3],index=['A','B','C'])
print(A)

访问系列值时,需要通过索引来访问,系列索引(index)和系列值是一一对应的关系。

from pandas import Series
A=Series([14,26,31])
print(A)
print(A[1])#print(A[1])的输出
print(A[5])#print(A[5])时会因索引越界而出错
from pandas import Series
A=Series([14,26,31],index=['first','second','third'])
print(A)
print(A['second'])#通过参数来访问系列值


from pandas import Series
#混合定义一个序列
x=Series(['a',True,1],index=['first','second','third'])
#根据索引访问
x[1]            #根据索引号访问
x['second']     #根据索引名访问
#不能越界访问,会报错
x[3]
#不能追加单个元素,但可以追加系列
x.append('2')
#追加一个系列
n=Series(['2'])
x.append(n)
#需要使用一个变量承载变化,即x.append(n)返回的是一个新序列
x=x.append(n)
#判断值是否存在,数字和逻辑型(True/False)是不需要加引号的
2 in x.values
'2' in x.values
#切片
x[1:3]
#定位获取,这个方法常用于随机抽样
x[[0,2,1]]
#根据索引名删除
x.drop(0)           #按索引名(数字)
x.drop('first')     #按索引名(字符)
#根据索引号找出对应的索引名
x.index[2]
#根据位置(索引)删除,返回新的序列
x.drop(x.index[3])
#根据值删除,显示值不等于2的系列,即删除2,返回新序列
x[x.values!=2]
#修改序列的值。将True值改为b,先找到True的索引:x.index[x.values==True]
x[x.index[x.values==True]]='b' #注意显示结果,这里把值为1也当作True处理了
#通过值访问系列index
x.index[x.values=='a']
#修改series中的index:可以通过赋值改变,也可以通过reindex方法
x.index=[0,1,2,3]
#可将字典化为Series
s=Series({'a':x.index[x.values=='b'],'b':2,'c':3})
'''
sort_index(ascending=True)方法可以对index进行排序操作,默认为升序。
也可以使用reindex方法重新排序。
'''
#reindex重排序
obj=Series([4.5,7.2,-5.3,3.6],index=['d','b','a','c'])
obj2=obj.reindex(['a','b','c','d','e'])
obj3=obj.reindex(['a','b','c','d','e'],fill_value=0)

2.DataFrame

使用方式如下:

DataFrame(columnsMap)

具体实例代码如下:

from pandas import Series
from pandas import DataFrame
df=DataFrame({'age':Series([26,29,24]),'name':Series(['Ken','Jerry','Ben'])},index=[0,1,2])
print(df)

注意: 数据框的访问方式

访问位置 方法 备注

访问列 变量名[列名] 访问对应的列。

访问行 变量名[n:m] 访问n行到m-1行的数据。

访问块(行和列) 变量名.iloc[n1:n2,m1:m2] 访问n1行到(n2-1)行,m1到(m-1)列的数据。

访问指定的位置 变量名.at[行名,列名] 访问(行名,列名)位置的数据。

例如:

#获取age的值
A=df['age']
print(A)
#获取索引号是第二行的值
B=df[1:2]
print(B)
#获取第0行到2行(不含)与第0列到2列(不含)的块
C=df.iloc[0:2,0:2]
print(C)
#获取第0行与name列的交叉值
D=df.at[0,'name']
print(D)
################################
from pandas import DataFrame
df1=DataFrame({'age':[21,22,23],'name':['KEN','JOHN','JIMI']});
df2=DataFrame({'age':[21,22,23],'name':['KEN','JOHN','JIMI']},index=['first','second','third']);
#访问行
df1[1:100]#显示index=1及其以后的99行数据,不包括index=100
df1[2:2]                #显示空
df1[4:1]                #显示空
df2['third':'third']    #按索引名访问某一行
df2=['first':'second']  #按索引名访问多行
#访问列
df1['age']              #按列名访问
df1[df1.columns[0:1]]   #按索引号访问
#访问快
df1.iloc[0:1,0:1]       #按行列索引号访问
#访问位置
df1.at[1,'name']        #1为索引
df2.at['second','name'] #索引名
df2.at[1,'name']        #当有索引名时用索引号就会报错
#修改列名
df1.columns=['age2','name2']
#修改行索引
df1.index=range(1,4)
#根据行索引删除
df1.drop(1,axis=0)      #axis=0是表示行轴,也可以省略
#根据列索引删除
df1.drop('age2',axis=1) #axis=1是表示列轴,不可省略
#第二种删除列的方法
del df1['age2']
#增加列
df1['newColumn']=[2,4,6]
#增加行。这种方法效率比较低
df2.loc[len(df2)]=[24,'Keno']
#增加行的方法
df1=DataFrame([[1,2],[3,4]],columns=list("AB"))
df2=DataFrame([[5,6],[7,8]],columns=list("AB"))
#方法一,合并只是简单的“叠加”成新的数据框,不修改index
df1.append(df2)                     #仅把df和df2“叠”起来了,没有修改合并后的index
#方法二,合并成一个新的数据框,并产生了新的index
df1.append(df2,ignore_index=True)   #修改index,对df2部分重新索引了


数据导入

1.导入txt文件

命令格式如下:

read_table(file,names=[列名1,列名2,...],sep“ ”,...)

其中:

file为文件路径和路径名;

names为列名。默认为文件中的第一行作为列名;

sep为分隔符,默认为空。

2.导入csv文件

命令格式如下:

read_csv(file,names=[列名1,列名2,...],sep“,”,...)

其中:

file为文件路径和路径名;

names为列名。默认为文件中的第一行作为列名;

sep为分隔符。

3.导入Excel文件

命令格式如下:

read_excel(file,sheetname,header=0)

其中:

file为文件路径和路径名;

sheetname指定sheet;

header,取0表示以文件第一行为表头显示,取1表示把文件第一行丢弃。


数据导出

1.导出csv文件

其命令格式如下:

to_csv(file_path,sep=“,”,index=TRUE,header=TRUE)

其中:

file_path为文件路径;

sep为分隔符,默认是逗号;

index表示是否导出行序号,默认为TRUE,导出行序号;

header表示是否导出列名,默认是TRUE,导出列名。

2.导出Excel文件

其命令格式如下:

to_excel(file_path,index=TRUE,header=TRUE)

其中:

file_path为文件路径;

index表示是否导出行序号,默认为TRUE,导出行序号;

header表示是否导出列名,默认是TRUE,导出列名。


版权声明:本文为CSDN博主「jwxdzxj」的原创文章,遵循 CC 4.0 BY-SA 版权协议,原文链接:https://blog.csdn.net/qq_41770283/article/details/98884747。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • Python是一门非常简洁的语言,和c/c++,java等有着较大的差别。到list和tuple这儿有点犯迷糊了,就从这儿开始写起。目前做接触到的列表有4个,dicth和set,这篇文章就来看看这几种列表的特性和用法。一、python“数组”ListList是python内置的一种数据类型列表。在我看来有点类似于数组,但是深究下来却有很多不同。题外话:python和以往学过的编程语言最大的不同在于变量不用声明类型,也就是可以实现如下操作:a = 3 print(a) a = ‘s’ print(a)这样的操作在大多数在以前学过的三种语言种都是不合法的,但...
            14 14 3200
            分享
          • 面试是一个“表达自己”的过程,我们需要在短暂的30到60分钟的时间,将自己的真本事表现出来,让面试官看到自己在这份职位上能产生的价值。我曾遇到很多人,简历背景非常厉害,但是在面试环节却差强人意,原因是什么呢?我想有两种情况,第一种是简历虚假,第二种是不善于表达,面试紧张等各种因素导致未将自己实际的能力表现出来。第一种情况,奉劝大家在做简历时一定要实事求是,HR都不傻,是真是假,是可以聊出来的。第二种情况,是我们今天分享的主要话题。接下来,我会按三个方面给大家分享我根据经验总结出来的干货:面试前的准备、面试中的表现、面试后的追踪。01 面试前的准备在我们收到一家企业的面试邀约并决定要参加面试后,...
            1 0 1793
            分享
          • 需求评审之后,开发人员一般会开始拆分任务,测试人员需要对新需求进行消化,消化过程最好的产物就是输出对新功能的需求项梳理,并且根据需求项列出测试注意点以及影响模块。这个过程很像去肉剔骨,抽丝剥茧的感觉,也就是掌握到了版本的精髓。需求点的形式有哪些呢?简单来说就是这个版本产品提出的希望实现的很多个功能点,比如:需要给门加一个锁,这就是一个需求点,智能锁还是机械锁,能不能支持反锁,装几个锁,安全性怎么样,可靠性怎么样,这些是根据需求点发散的测试点,这些测试点有一些在文档里有说明,有一些是没有说明的,需要根据用户实际使用场景考虑。很多人又会有这样的疑惑:测试项和需求项之间的区别有哪些呢。不看以下内容,...
            1 1 7622
            分享
          •   各位小伙伴们还记上个月小红书APP崩溃闪退,导致大批用户卸载APP重装的事故吗?闪退Bug从凌晨持续到第二天上午。  事发第二天,就有研发在线承认了,因为自己的失误导致了这次事件,评论区也有人担心博主会不会失去工作。  这件事会到此为止吗?有研发人员承认了错误,测试人员还需要负责吗?  也由此引出一个测试人员的最大疑问:  项目上线后出了严重Bug,到底是谁的责任?  目前存在如下两种观点:  Mr.Zhou  Mr.Zhou是企业的研发总监,他看到这个Bug时,确定是测试的锅。  他认为:测试工程师是软件产品质量的最后一个把关者,没有做好更新测试,才导致版本发布上线后APP更新崩溃。因此...
            0 0 921
            分享
          • 一、测试过程拆解针对BI报表测试,一般情况下,我们需要自己准备数据,来验证报表统计的准确性。由于系统的构成不一样,简单把报表测试过程分解为两个层次:数据收集汇总、数据统计展。在做数据收集汇总验证时,我们需要了解数据从哪里来,如何汇总,数据入库的规则是什么,如何存放,在什么时间点进行汇总。把这些问题弄清楚了,才可以针对性的做测试策略,来验证数据入库的准确性。这步很重要,因为这个是报表测试的数据来源,如果这里的数据出错,后面的一切都没有意义。针对数据统计展现,我们需要了解页面上展现的数据来源于库中的哪些表哪些字段,根据什么样的规则来统计。把所有需要展现的数据集对应清楚,这样才能有效的进行数据准备,...
            1 1 1432
            分享
      • 51testing软件测试圈微信