pythonpandas入门_pyhton pandas数据分析基础入门(一文看懂pandas)
//2019.07.17
pyhton中pandas数据分析基础入门(一文看懂pandas),
教你迅速入门pandas数据分析模块(后面附有入门完整代码,可以直接拷贝运行,含有详细的代码注释,可以轻松帮助你入门理解)
1.1 pandas模块简介
首先,使用pandas相应的操作之前都需要导入pandas模块
import pandas as pd
import numpy as np #导入pandas和numpy模块
1、pandas中具有两种常见的数据结构:
(1)Series
它是指一维列表或者数组(列向量),和numpy中的array比较类似,可以储存很多不同类型的数据类型;
(2)DataFrame
二维型的数据结构,和Excel表格比较类似,它可以理解为是Series的容器。
1.2 pandas里面的series类型应用:
1、对于series的定义:
s=pd.Series([1,2,3,np.nan,2,3,1,...],index=["a","b","c","d","e"...])
其中对于index是对于每一行数字属性的规定
2、对于series的索引index,其实质是指列表的行标签,可以serie.index来进行查询和输出;
1.3 DataFrame二维列表的相关操作大全
(一)构造DataFrame二维列表的方式
1、对于DataFrame的二维列表数据的出入主要有两种方式:传入二维数组和使用字典的定义方法;
方式一:df=pd.DataFrame(np.random.randn(6,4)) #二维数组的传入方法
方式二:df=pd.DataFrame({"A":[1,2,3,4,5],"B":["1,1,2,1,1"],"C":list("abcde"),"D":["yanjiangyi"]*5}) #字典的传入方式
2、对于二维列表各行各列的属性名称定义主要采用的是index(各行名称)和columns(各列名称):
df=pd.DataFrame(np.random.randn(6,4),index=pd.date_range("20180701",periods=6,freq="M"),columns=[list("abcd")])
3、关于DateFrame的字典数据传入方式,其中字典的key指的是列表的列名称,即columns的取值,另外对于每一列的取值主要有以下六种方式,都可以传入数组:
df=pd.DataFrame({"A":1.0,"B":np.array([3]*4,dtype=int),"C":pd.Timestamp("20190701"),"D":pd.Series([1.21,2.21,3.24,4.26],dtype=float),"E":pd.Categorical(["a","b","c","d"]),"F":"abc"})
(二)DataFrame二维数组的数据的查询
1、头尾数据查询:采用函数.head(x)和.tail(x)可以查询前后x行的数据;
2、查看表格数据的每一列数据类型可以采用df.dtypes来进行查看数据类型;
1.4pandas读取数据及其数据操作
1、pandas读取表格数据的方式是采用自带的函数pd.read_excle(表格的路径)和pd.read_csv(表格的路径)
例如:
df=pd.read_excel("D:/Byrbt2018/Study/Python数据分析课程+练习+讲解/Python数据分析课程+练习+讲解/作业/作业3/作业3/香港酒店数据.xlsx") #表格的读取操作主要依靠的是pd.read_excel/csv函数+文件路径
2、提取表格中的某几行某几列数据的方式:
(1)采用属性名称的方式:
df.loc[行属性A:行属性B,列属性:列属性]
(2)采用表格下标的方式:
df.iloc[行序号:行序号,列序号:列序号]
(3)直接采用数组的方式:
df[[列属性1,列属性2,列属性3...]][行号:行号]
(4)采用标准格式:
df.loc[[index,,...],[columns,,...]] #先行后列
3、表格行的增加和删减
(1)增加一行:
先用字典定义好这一行的新的数据(字典的key是表格的各列属性),然后将其转换为series一维列表,之后采用表格的增添函数df.append(s)来进行添加这一行的数据,另外还可以用s.name来定义新添加行的行属性名称
s={0:"天水宾馆",1:"休闲娱乐",2:"天水",3:"甘谷县",4:"中关村街道",5:4.5,6:11000,7:345} #先定义一行数据,利用字典的操作来进行定义新的一行
s1=pd.Series(s) #转换字典为一维列表
s1.name=420 #定义列表的行属性
(2)删减其中一行:
直接调用pandas模块的删减函数df.drop([行号])函数来进行删减相应需要删减的某一行数据。
4、列的相关操作
(1)列的增加:
列的增加通过直接增加定义就可以:
df["序号"]=range(1,len(df)+1) #增加了序号这一个新的列
(2)列的删减:
列的删减可以通过df.drop["列属性名称",axis=1]来进行操作,其中axis=1必须要设置,他表示删除的是列而不是行,如果不写axis或者设置axis=0,表示的是要进行删减的行:
df.drop["列属性名称",axis=1]
5、有关数据条件选择的操作:
关于数据条件性选择主要可以采用df[(选择条件)]来继续操作,举例如下:
print(df[df.评分>4.5]) #选择评分高于4.5的数据列表
print(df[(df.评分>4.5 )& (df.类型=="浪漫情侣")]) #选择评分高于4.5并且类型属于浪漫情侣的数据列表
print(df[((df.类型=="香港")|(df.日常人数>1000))&(df.评分>4.5)])
#选择类型时香港或者日常人数超过1000人的,并且评分高于4.5的数据列表
6、对于数据缺失值和异常值的处理操作:
(1)缺失值的处理主要包含以下四个操作:
isnull(返回一个布尔型的数据类型,判断是否为缺失值)
notnull(和isnull正好相反,判断不是缺失值)
fillna(对于缺失值进行填充)
dropna(对于缺失值进行相应的删减过滤)
(2)缺失值的处理规则:
#数据缺失值及其异常值的处理
对于缺失值的删减dropna()主要有三个参数:how=all(删掉所有 行和列),inplace=Ture(实时对于删减的表格进行更新),axis=0或者1(删减处理的是行或列)
print(df.isnull())
print(df[df["评分"].isnull()]) #缺失值的判断和输出
#对于缺失值的填充
print(df[df["评价人数"].isnull()]) #首先判断是否有残缺值
df["评价人数"].fillna(np.mean(df["评价人数"]),inplace=True) #缺失值的填充和实时更新inplace=1
print(df)
print(len(df[df["评价人数"].isnull()]))
print(len(df))
print(len(df.dropna()))
df.dropna(inplace=True)
print(len(df))
#异常值的处理
异常值一般主要是判断表格里面的数据是否和列属性的性质不符(比如对于人数属性的列数据存在一小数点负数的情况),然后结合判断的情况进行数据的处理和更新
print(len(df[df["日常人数"]%1!=0])) #对于异常值的判断和处理
df=df[(df["日常人数"]%1==0)&(df["日常人数"]>0)] #根据异常值的条件进行实时更新
print(df)
整体的入门运行代码如下所示(可以直接拷贝运行,含有详细的代码注释,可以轻松帮助你入门理解):
import pandas as pd
import numpy as np #导入pandas和numpy模块
# Series一维列表操作
s=pd.Series([1,2,3,4,np.nan,2,3,4,6,7])
print(s)
print(s.index) #输出series的行标签(属性)
print(s.values) #输出series的取值
print(s[2:9:2]) #隔行输出相应的值(切片操作)
s.index.name="属性" #定义列表series的属性名称
print(s)
s.index=list("abcdefghij") #重新定义表格每一行的属性名字
print(s)
print(s["a":"h":2]) #提取其中一部分,进行相关的的切片操作
# Dataframe二维列表操作大全
date=pd.date_range("20180101",periods=6,freq="D") #生成时间序列
print(date)
df=pd.DataFrame(np.random.randn(6,4),index=date,columns=list("abcd")) #定义随机数的二维列表6x4,然后定义各行各列的名称(index和columns)
df.index.name="date"
print(df)
df1=pd.DataFrame({"A":1.0,"B":np.array([3]*4,dtype=int),"C":pd.Timestamp("20190701"),"D":pd.Series([1.21,2.21,3.24,4.26],dtype=float),"E":pd.Categorical(["a","b","c","d"]),"F":"abc"})
print(df1)
print(df1.values) #查看数据的值
print(df1.index) #查看数据的行属性名称
print(df1.head(3)) #c查看数据的前三行
print(df1.tail(3)) #查看数据的后三行
print(df1.dtypes) #查看表格数据的每一类数据类型
#数据表格的读取与各种操作
df=pd.read_excel("D:/Byrbt2018/Study/Python数据分析课程+练习+讲解/Python数据分析课程+练习+讲解/作业/作业3/作业3/香港酒店数据.xlsx") #表格的读取操作主要依靠的是pd.read_excel/csv函数+文件路径
print(df)
#表格的行操作
print(df.iloc[0]) #采用下标的形式来进行数据的查询df.iloc[:,;]
print(df.iloc[:5]) #采用下标的形式来进行数据的查询df.iloc[:,;]
print(df.loc[0:5,0:3]) #采用行和列属性的形式来进行数据的查询df.iloc[:,;]
#增加一行操作
s={0:"天水宾馆",1:"休闲娱乐",2:"天水",3:"甘谷县",4:"中关村街道",5:4.5,6:11000,7:345} #先定义一行数据,利用字典的操作来进行定义新的一行
s1=pd.Series(s) #转换字典为一维列表
s1.name=420 #定义列表的行属性
print(s1)
df=df.append(s1) #增加一行数据操作(需要重新定义列表)
print(df)
print(df[-5:])
df=df.drop([420]) #删除某一行数据操作(需要重新定义列表)
print(df)
df.columns=["名称","类型","城市","地区","街道","评分","评价人数","日常人数"] #改变表格的各列名称
print(df)
print(type(df.index))
print(df.columns)
print(df["名称"])
#提取某几行某几列数据的三种方法(df.loc[;,;,iloc[;,;],df[[,,][:])
print(df[["名称","类型"]][:5]) #提取某几列某几行
print(df.iloc[0:5,0:3]) #提取某行某列(行在前,列在后)
print(df.loc[1:40,"类型":"评分"])
print(df[["名称","评分","城市"]][0:400:20]) #列在前,行在后
#列的相关操作
df["序号"]=range(1,len(df)+1) #增加列的操作
print(df[:5])
df=df.drop("序号",axis=1) #删减列时采用.drop函数,此时drop(x,axis=1)x表示列的名称,axis=1表示删除的是列,不写axis表示它为0,删除的默认是行
print(df)
print(df.loc[[1,2,3,5,10],["类型","评分"]]) #标准形式提取表格中的数据
#条件选择的数据操作
print(df[df.评分>4.5])
print(df[(df.评分>4.5 )& (df.类型=="浪漫情侣")])
print(df[((df.类型=="香港")|(df.日常人数>1000))&(df.评分>4.5)])
#数据缺失值及其异常值的处理
print(df.isnull())
print(df[df["评分"].isnull()]) #缺失值的判断和输出
#对于缺失值的填充
print(df[df["评价人数"].isnull()]) #首先判断是否有残缺值
df["评价人数"].fillna(np.mean(df["评价人数"]),inplace=True) #缺失值的填充和实时更新inplace=1
print(df)
print(len(df[df["评价人数"].isnull()]))
print(len(df))
print(len(df.dropna()))
df.dropna(inplace=True)
print(len(df))
print(len(df[df["日常人数"]%1!=0])) #对于异常值的判断和处理
df=df[(df["日常人数"]%1==0)&(df["日常人数"]>0)] #根据异常值的条件进行实时更新
print(df)
pythonpandas入门_pyhton pandas数据分析基础入门(一文看懂pandas)相关推荐
- 【Python基础】一文看懂 Pandas 中的透视表
作者:来源于读者投稿 出品:Python数据之道 一文看懂 Pandas 中的透视表 透视表在一种功能很强大的图表,用户可以从中读取到很多的信息.利用excel可以生成简单的透视表.本文中讲解的是如何 ...
- AI基础:一文看懂BERT
0.导语 自google在2018年10月底公布BERT在11项nlp任务中的卓越表现后,BERT(Bidirectional Encoder Representation from Transfor ...
- 前端必读 0基础学习 一文看懂 Vue3 对比 Vue2 发生哪些变化
望本篇文章能帮你加深对 Vue 的理解,能信誓旦旦地说自己熟练Vue2/3. 内容混杂用法 + 原理 + 使用小心得,建议收藏,慢慢看. 区别 生命周期的变化 整体来看,变化不大,只是名字大部分需要 ...
- 用python玩转办公软件(pandas数据分析)入门
用python玩转办公软件(pandas数据分析)入门 文章目录 用python玩转办公软件(pandas数据分析)入门 1.pandas介绍 2.csv文件介绍 3.pandas常用操作csv (1 ...
- 码书:入门中文NLP必备干货:5分钟看懂“结巴”分词(Jieba)
导读:近年来,随着NLP技术的日益成熟,开源实现的分词工具越来越多,如Ansj.盘古分词等.在本文中,我们选取了Jieba进行介绍和案例展示,主要基于以下考虑: 社区活跃.截止本文发布前,Jieba在 ...
- BI/数据仓库/数据分析 基础入门:一些常见概念解释
2019独角兽企业重金招聘Python工程师标准>>> Preface:本文将会讲述 BI/DW/DA 领域的一些常见概念,如:事实表.维度表.建模.多维分析.cube 等,但不涉及 ...
- 2023年最新最全uniCloud入门学习,零基础入门到实战项目 uni-admin打造uniapp网页后端 微信支付宝抖音小程序后端 unicloud数据后台快速打造uniapp小程序项目
今天开始带着大家一起零基础学习uniCloud,在下面的课程中我们就简称uniCloud为cloud吧.我这里从零基础开始教大家,后面可以带大家简单的做一个实战项目.所以不用担心自己没有基础,跟着石头 ...
- 【Go语言入门指南】零基础入门 go 语言 | Golang 入门指南
文章目录 写在前面 全部练习项目都在github这个仓库中`https://github.com/CocaineCong/Golang-Learning` 1. [第一轮]基础部分 1.1 教程 1. ...
- SEO新手入门,SEO零基础入门教程,新手做SEO怎么做
seo的作用是对网站进行seo优化,可以给网站带来大量的搜索引擎流量.但是想要做好网站优化也有难度,尤其是对于seo新手来说,因为缺乏理论和实战,所以seo新手需要多加练习.那么具体seo新手入门应该 ...
- Pandas数据分析基础
一)安装Pandas库 使用之前确保已经安装了Pandas库,Pycharm有非常简单的操作,将下面代码粘贴到Pycharm的第一行,然后安ALT+回车,install即可. import panda ...
最新文章
- 米的建站日记(2014年12月18日)
- angr学习笔记(11)(SimProcedure)
- CEO 赠书 | 甲之蜜糖乙之砒霜,创新者也将成为守旧者
- 完全卸载sql2005(试了以后很成功,收录下来,分享给大家)
- wenbao与最优比率生成树
- nginx 禁止某个IP访问
- Leetcode之整数反转
- 项目3:PHP抽奖程序 ,抽奖规则代码 分时间段
- qt 串口助手_新手如何从零开发ROS小车 (ros串口通讯、PID运动控制、双轮差速模型解算...
- 使用Python实现XML文件转为Excel文件
- [高通MSM8953_64][Android10]user版本默认获取root权限
- Java:判断某年是闰年or平年并输出某月的天数
- ubuntu命令行模式与图形桌面切换方法
- ai的布尔运算在哪_在AI中如何进行布尔运算
- 心肺运动试验----各类参数分析笔记
- ldaps 认证环境
- win10如何打开计算机端口,win10系统开启计算机端口的操作方法
- rollback mysql_MySQL事务-ROLLBACK,COMMIT用法详解
- python计时器类
- 利用html写一个日历,Vue写一个日历