基于Python的大数据分析基础(一)

2023-11-11

关于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表示把文件第一行丢弃。

4.导入Mysql库
暂时不学


数据导出
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,导出列名。

3.导出到Mysql库

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于Python的大数据分析基础(一) 的相关文章

随机推荐

  • 生产数据库数据误删、错刷恢复备份实战

    文章目录 故障起因 前提 全备 全备脚本 增备 数据库配置要求 增备脚本 定时备份 故障处理 思路 全备恢复 解析增备 新建binlog解析导出目录 查看整点binlog列表 将每个整点的增量备份文件导出到sql文件 选定结束导入的SQL文
  • react函数式组件(hooks)之useEffect

    文章目录 前言 一 useEffect的作用 二 useEffect的使用 1 class组件 2 函数式组件 总结 前言 React函数式编程没有生命周期 因此需要借助useEffect来实现 一 useEffect的作用 发ajax请求
  • Swift4.0--Photos框架的使用附从相簿中获取图片

    首先发布Demo链接 Photos从相簿中获取图片 效果展示 一 Photos简介 在iOS 8之前 开发者只能用 AssetsLibrary 框架访问的用户的照片库 几年以来 相机应用和照片应用发生了显著的变化 增加了许多新特性 包括按时
  • invalid Key or Package

    使用EasyAR打包apk后出现invalid Key or Packag解决方案 1 Bundle ID IOS 和 PackageName Android 填写的对不对 2 回头看Unity里面Player Setting 里面的名字可
  • Qt 文件读写操作

    转载 http blog csdn net ei nino article details 7301132 文列出Qt读写文件常用方式 还有对文件的一些简单操作 读文件 cpp view plain copy print QString f
  • day28 回溯

    39 组合总和 数字可以被无限制选取 但是无需考虑顺序 组合 因此递归还是需要考虑startIdx 但是每次都从最开始进行回溯 而不是startIdx 1 40 组合总和II 通过标识去除重复值 树层去重 131 分割回文串 每次找到切割点
  • 孩子们的游戏(圆圈中最后剩下的数)

    每年六一儿童节 牛客都会准备一些小礼物去看望孤儿院的小朋友 今年亦是如此 HF作为牛客的资深元老 自然也准备了一些小游戏其中 有个游戏是这样的 首先 让小朋友们围成一个大圈 然后 他随机指定一个数米 让编号为0的小朋友开始报数 每次喊到M
  • firrtl

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 动手 sbt 2 之后 再回头看 chisel第一个实验 根据 https github com freechipsproject firrtl 发现firrtl没有执行s
  • android ARouter源码分析

    背景 随着项目越做越大 代码量越来越多 项目也随之改造成组件化的开发模式 组件化开发非常适合庞大的项目 将每个业务模块 功能模块解耦 抽离成组件的形式 各个组件遵循严格的依赖关系 因为这层严格的依赖关系 使得组件化比模块化结构更加简洁和清晰
  • python中objects_python之django的objects.get和objects.filter方法

    为了说明它们两者的区别定义2个models class Student models Model name models CharField 姓名 max length 20 default age models CharField 年龄
  • 实现简单感知机_感知机的原始算法与对偶算法

    一 感知机模型 感知机是一个二分类的线性分类模型 输入为实例的特征向量 输出实例的类别 取1 1两个值 输入判别模型 它适用于线性可分的数据集的分类 所谓线性可分 就是两类数据可以用空间中的一个超平面分离 即存在参数 当 属于其中一类时 当
  • 001:输出第二个整数

    001 输出第二个整数 描述 输入三个整数 把第二个输入的整数输出 输入 只有一行 共三个整数 整数之间由一个空格分隔 整数是32位有符号整数 输出 只有一行 一个整数 即输入的第二个整数 样例输入 123 456 789 样例输出 456
  • cdn.jsdelivr.net访问超时,临时解决方案

    近日在访问https cdn jsdelivr net npm swagger ui dist 4 swagger ui bundle js 时候发现net ERR CONNECTION TIMED OUT 查看官网 发先已有用户提交问题
  • .exe解释

    exe文件 exe就是可执行文件 可执行文件就是程序 qq 浏览器 word等等这些程序其实就是一个个的 exe格式文件 它们和存在电脑里的照片 文档 视频一样 都是一个个文件 只不过格式不一样 word文档是 doc或者 docx格式的
  • 源码安装 nginx/1.15.8 的脚本

    环境是在centos7 下 其他环境还未试过 nginx 的安装路径在 usr local nginx bin bash 一般系统中已经装了了make和g 无须再装 yum y install autoconf automake make
  • 【通讯录--动态实现】

    目录 前言 一 功能设置 声明结构体 1 初始化 2 释放空间 3 添加联系人 4 删除联系人 5 查找联系人 6 修改联系人 7 显示联系人 8 清空联系人 9 排序联系人 二 整体代码 1
  • js的三种使用方式(行内js、内部js、外部js)

    1 行内js js不单独写出
  • 远程VirtualBox上的Linux虚拟机

    项目场景 为了能够隔离实验环境 在VirtualBox上安装了Centos7用来专门跑实验 却发现无法远程 关闭防火墙和SELinux 1 关闭防火墙 2 关闭SELinux getenforce 命令查看是否开启 若为 Enfocing
  • ERP系统设计:库存管理怎么做?

    库存是企业打算出售给客户以获取利润的商品或材料 库存管理是供应链的一个关键要素 涉及到从制造商到仓库 从这些设施到销售点的库存跟踪 库存管理的目标是在适当的时间将适当的产品放置在适当的地点 库存管理的业务问题 在进行库存管理工作时 会出现很
  • 基于Python的大数据分析基础(一)

    关于Pandas Pandas中的数据结构 1 Series 一维数组系列 也称序列 2 DataFrame 二维的表格型数据结构 3 Panel 三维数组 数据类型 1 Logical 逻辑型 2 Numeric 数值型 3 Charac