//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)




pyhton pandas数据分析基础入门(一文看懂pandas)的更多相关文章

  1. python pandas数据分析基础入门2——(数据格式转换、排序、统计、数据透视表)

    //2019.07.18pyhton中pandas数据分析学习——第二部分2.1 数据格式转换1.查看与转换表格某一列的数据格式:(1)查看数据类型:某一列的数据格式:df["列属性名称&q ...

  2. python中pandas数据分析基础3(数据索引、数据分组与分组运算、数据离散化、数据合并)

    //2019.07.19/20 python中pandas数据分析基础(数据重塑与轴向转化.数据分组与分组运算.离散化处理.多数据文件合并操作) 3.1 数据重塑与轴向转换1.层次化索引使得一个轴上拥 ...

  3. 基础篇|一文搞懂RNN(循环神经网络)

    基础篇|一文搞懂RNN(循环神经网络) https://mp.weixin.qq.com/s/va1gmavl2ZESgnM7biORQg 神经网络基础 神经网络可以当做是能够拟合任意函数的黑盒子,只 ...

  4. [转帖] 一文看懂:"边缘计算"究竟是什么?为何潜力无限?

    一文看懂:"边缘计算"究竟是什么?为何潜力无限? 转载cnbeta   云计算 雾计算 边缘计算...   知名创投调研机构CB Insights撰文详述了边缘计算的发展和应用前景 ...

  5. Nature 为引,一文看懂个体化肿瘤疫苗前世今生

    进入2017年,当红辣子鸡PD-1疗法,一路横扫多个适应症.而CAR-T治疗的“小车”在获得FDA专委会推荐后也已经走上高速路,成为免疫治疗又一里程碑事件.PD-1.CAR-T之后,下一个免疫治疗产品 ...

  6. 一文看懂大数据的技术生态圈,Hadoop,hive,spark都有了

    一文看懂大数据的技术生态圈,Hadoop,hive,spark都有了 转载: 大数据本身是个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单机尺度的数据处理而诞生的.你可以把它 ...

  7. 一文看懂java io系统 (转)

    出处:  一文看懂java io系统   学习java IO系统,重点是学会IO模型,了解了各种IO模型之后就可以更好的理解java IO Java IO 是一套Java用来读写数据(输入和输出)的A ...

  8. 一文看懂YOLO v3

    论文地址:https://pjreddie.com/media/files/papers/YOLOv3.pdf论文:YOLOv3: An Incremental Improvement YOLO系列的 ...

  9. 一文看懂web服务器、应用服务器、web容器、反向代理服务器区别与联系

    我们知道,不同肤色的人外貌差别很大,而双胞胎的辨识很难.有意思的是Web服务器/Web容器/Web应用程序服务器/反向代理有点像四胞胎,在网络上经常一起出现.本文将带读者对这四个相似概念如何区分. 1 ...

随机推荐

  1. ZeroTier 局域网组建工具

    无公网IP通过ZeroTier实现内网穿透 需求:想要在公司访问家里内网NAS,或是在家里访问公司服务 有固定的公网IP或动态的公网IP:常见的方案动态域名解析做端口转发方式等 无公网IP:常见的实现 ...

  2. 【PAT甲级】1005 Spell It Right (20 分)

    题意: 给出一个非零整数N(<=10^100),计算每位之和并用英文输出. AAAAAccepted code: #include<bits/stdc++.h> using name ...

  3. P1120/UVA307 小木棍(sticks) 题解

    题目描述 pdf 题解 注意的问题是,各个原始木棒的长度都是一样的! 说一下本题的总思路即:DFS+超强力剪枝!(详见本人的 AC 程序) 首先,我们要从小到大枚举原始木棒的长度len,也就是枚举答案 ...

  4. 9.2.3 hadoop reduce端连接-分区分组聚合

    1.1.1         reduce端连接-分区分组聚合 reduce端连接则是利用了reduce的分区功能将stationid相同的分到同一个分区,在利用reduce的分组聚合功能,将同一个st ...

  5. Firefox 的 hack 及 问题

    hack: @-moz-document url-prefix(){ #selector{ display: flex; justify-content: space-between; } } 问题一 ...

  6. [python]ubuntu下的python2和python3

    在终端分别输入python,python2,python3python和python2默认都是python2python3才是python3 Ubuntu下是默认没有pip的,需要自己手动安装 sud ...

  7. 120、Java中String类之实现首字母大写

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  8. PyCharm破解安装方法

    1.在3322下载站下好压缩包之后,直接点击安装文件“pycharm-professional-2018.1.exe”进行安装,默认点击“next”下一步进行操作2.选择文件所创建的位置.位置可以选择 ...

  9. 详述ThreadLocal

    ThreadLocal的作用和目的:用于实现线程内的数据共享,即对于相同的程序代码,多个模块在同一个线程中运行时要共享一份数据,而在另外线程中运行时又共享另外一份数据. 举一个反面例子,当我们使用简单 ...

  10. python学习第二课——while循环

    #while循环基础语句 while 1==1: print('OK') #死循环 #如何阻止死循环 count=0 while count<10: print('第'+(str)(count) ...