草庐IT

pyhton_Pandas教程

搁浅的小鲸鱼 2023-03-28 原文

Pandas 是 Python 语言的一个扩展程序库,用于数据分析。

  Pandas 是一个开放源码、BSD 许可的库,提供高性能、易于使用的数据结构和数据分析工具。

  Pandas 名字衍生自术语 "panel data"(面板数据)和 "Python data analysis"(Python 数据分析)。

  Pandas 一个强大的分析结构化数据的工具集,基础是 numpy(提供高性能的矩阵运算)。

  Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据。

  Pandas 可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。

数据结构

Series 是一种类似于一维数组的对象,它由一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即索引)组成。

DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。


一、Pandas 安装

  安装 pandas 需要基础环境是 Python,开始前我们假定你已经安装了 Python 和 Pip。

pip install pandas

 查看pandas的版本

import pandas as pd

print(pd.__version__)

 

二、Pandas 数据结构 -- Series

  pandas.Series( data, index, dtype, name, copy)
  data:一组数据(ndarray 类型)。
  index:数据索引标签,如果不指定,默认从 0 开始。
  dtype:数据类型,默认会自己判断。
  name:设置名称。
  copy:拷贝数据,默认为 False。

mydataset = {
'sites': ["Google", "Runoob", "Wiki"],
'number': [1, 2, 3]
}
#将字典类型转化成dataframe类型
myvar = pd.DataFrame(mydataset)
print(myvar)
print()

a = [1, 2, 3]
myvar = pd.Series(a)
print(myvar)
print(myvar[1])#指定索引查询

sites = {1: "Google", 'runoob': "Runoob", 3: "Wiki"}
myvar = pd.Series(sites)#使用字典类型创建Series,key的值就成了索引值
print(myvar)
print()

# 参数index
a = ["Google", "Runoob", "Wiki"]
myvar = pd.Series(a, index = ["x", "y", "z"])#index指定索引名称
print(myvar)
print(myvar['y'])
print()

sites = {1: "Google", 2: "Runoob", 3: "Wiki"}
myvar = pd.Series(sites, index = [3, 2])#使用索引,截取字典中所需的部分
print(myvar)
print()

# 参数name,设置name属性
sites = {1: "Google", 2: "Runoob", 3: "Wiki"}
myvar = pd.Series(sites, index = [1, 2], name="I is series(name)" )
print(myvar)

  

三、Pandas 数据结构 - DataFrame

  pandas.DataFrame( data, index, columns, dtype, copy)
  data:一组数据(ndarray、series, map, lists, dict 等类型)。
  index:索引值,或者可以称为行标签。
  columns:列标签,默认为 RangeIndex (0, 1, 2, …, n) 。
  dtype:数据类型。
  copy:拷贝数据,默认为 False。

data = [['Google',10],['Runoob',12],['Wiki',13]]
df = pd.DataFrame(data,columns=['Site','Age'],dtype=float) # 列表转dataframe
print(df)

data = {'Site':['Google', 'Runoob', 'Wiki'], 'Age':[10, 12, 13]}
df = pd.DataFrame(data) # 字典转dataframe
print (df)

data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data)
print (df)

data = {
"calories": [420, 380, 390],
"duration": [50, 40, 45]
}
df = pd.DataFrame(data)
print(df)
print(df.loc[0])# 使用df.loc[]返回第一行
print(df.loc[1])# 使用df.loc[]返回第一行
print(df.loc[[0,1]])# 使用df.loc[[ ]]返回两行数据
print(df.loc[0:1,['calories']])# 使用df.loc[a:b ,[' ']]返回指定某列 a~b的数据

data = {
"calories": [420, 380, 390],
"duration": [50, 40, 45]
}
df = pd.DataFrame(data, index = ["day1", "day2", "day3"])#指定索引值
print(df)
print(df.loc['day2'])

 

 四、Pandas CSV 文件

   1、read_csv()  将csv()文件导入,存在Dataframe对象中

import pandas as pd

# pd.read_csv() 读取csv文件
df = pd.read_csv('./nba.csv',encoding='GBK')
print(df.to_string())
print(df.loc[:,['Name']])#获取列

# head()
print(df.head().to_string())#默认获取前5行
print(df.head(3).to_string())#获取前3行

# tail()
print(df.tail().to_string())#默认获取后5行
print(df.head(3).to_string())#获取后3行

# info() 返回表格的一些基本信息
print(df.info())

   2、to_csv() 将 DataFrame 存储为 csv 文件

import pandas as pd


# 使用 to_csv() 方法将 DataFrame 存储为 csv 文件
nme = ["Google", "Runoob", "Taobao", "Wiki"]
st = ["www.google.com", "www.runoob.com", "www.taobao.com", "www.wikipedia.org"]
ag = [90, 40, 80, 98]
dict = {'name': nme, 'site': st, 'age': ag}
df = pd.DataFrame(dict)
# print(df)

df.to_csv('./aaa.csv')# 保存 dataframe到该文件夹下
df.to_csv(r'C:\Users\Public\Desktop\a1.csv',encoding='utf8')# 保存 dataframe到指定路径

path = r"C:\Users\Public\Desktop"
wen = '\ccc.csv'
df.to_csv(path+wen,encoding='utf8')
 3、to_string() 用于返回 DataFrame 类型的数据,如果不使用该函数,则输出结果为数据的前面 5 行和末尾 5 行,中间部分以 ... 代替。
import pandas as pd
df = pd.read_csv('nba.csv') print(df)

  

五、Pandas JSON

1、JSON 对象与 Python 字典具有相同的格式,所以我们可以直接将 Python 字典转化为 DataFrame 数据:
import pandas as pd

# 字典格式的 JSON                                                                                              
s = {
    "col1":{"row1":1,"row2":2,"row3":3},
    "col2":{"row1":"x","row2":"y","row3":"z"}
}
# 读取 JSON 转为 DataFrame                                                                                          
df = pd.DataFrame(s)
print(df)

  以上实例输出结果为:

      col1 col2
row1     1    x
row2     2    y
row3     3    z

  2、从 URL 中读取 JSON 数据:

import pandas as pd

URL = 'https://static.runoob.com/download/sites.json'
df = pd.read_json(URL)
print(df)

  

六、Pandas 数据清洗

  数据清洗是对一些没有用的数据进行处理的过程。

  很多数据集存在数据缺失数据格式错误错误数据重复数据的情况,如果要对使数据分析更加准确,就需要对这些没有用的数据进行处理。

  在这个教程中,我们将利用 Pandas包来进行数据清洗。

 

1、Pandas 清洗空值

   如果我们要删除包含空字段的行,可以使用 dropna() 方法,语法格式如下:

    DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
参数说明:
axis:  默认为 0,表示逢空值剔除整行,如果设置参数 axis=1 表示逢空值去掉整列。 how:   默认为 'any' 如果一行(或一列)里任何一个数据有出现 NA 就去掉整行,如果设置 how='all' 一行(或列)都是 NA 才去掉这整行。 thresh: 设置需要多少非空值的数据才可以保留下来的。 subset: 设置想要检查的列。如果是多个列,可以使用列名的 list 作为参数。 inplace如果设置 True,将计算得到的值直接覆盖之前的值并返回 None,修改的是源数据。默认为False

  1.1、添加na_values属性指定的某些数据修改为空数据(NaN)

# df = pd.read_csv(r'C:\Users\Administrator\Desktop\property-data.csv')
missing_values = ["n/a", "na", "--","N","Y"]
df1 = pd.read_csv('./property-data.csv')
df2 = pd.read_csv('./property-data.csv',na_values=missing_values)#添加na_values属性指定的某些数据修改为空数据(NaN)
print(df1)
print(df2)
# print(df2['SQ_FT'].isnull())#判断某列中的各个单元格是否为空

  1.2、 dropna() 方法 返回一个新的 DataFrame,不会修改源数据。

# 如果你要修改源数据 DataFrame, 可以使用 inplace = True 参数:
new_df = df1.dropna()#如果某行中有一个单元格数据为空则删除整行
new_df2 = df1.dropna(subset=['NUM_BATH'])# 某指定列如果有空数据,则删除空数据所在行
print(new_df)
# print(new_df2)

  1.3、 fillna()方法 来替换一些空字段

df3 = df1.fillna('666') #添加 inplace=True属性会改变源数据
df4 = df1['NUM_BEDROOMS'].fillna('555') #指定某列获取数据并替换空数据
print(df3)
print(df4)

  1.4、使用 mean() 方法计算列的均值并替换空单元格

x = df1["ST_NUM"].mean() #指定某列进行平均值计算
df1["ST_NUM"].fillna(x, inplace = True)#使用fillna()方法进行数据替换
print(x)
print(df1)

  1.5、使用 median() 方法计算列的中位数并替换空单元格:

x = df1["PID"].median()
df1_1 = df1["PID"].fillna(x)
print(x)
print(df1_1)

  1.6、使用 mode() 方法计算列的众数并替换空单元格

x = df1["PID"].mode()
df1["PID"].fillna(x,inplace=True)
print(x)
print(df1)

  

2、Pandas 清洗格式错误数据

3、Pandas 清洗错误数据

4、Pandas 清洗重复数据









有关pyhton_Pandas教程的更多相关文章

  1. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  2. 在VMware16虚拟机安装Ubuntu详细教程 - 2

    在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主

  3. hadoop安装之保姆级教程(二)之YARN的配置 - 2

    1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模

  4. ruby - 在 RUBY 上的 PADRINO 框架上使用 RSPEC 进行测试的教程 - 2

    我是Ruby新手,并被要求在我们的新项目中使用它。我们还被要求使用Padrino(Sinatra)作为后端/框架。我们被要求使用Rspec进行测试。我一直在寻找可以指导在Padrino上使用RspecforRuby的教程。我得到的主要是引用RoR。但是,我需要RubyonPadrino。请在任何入门/指南/引用/讨论等方面指导我。如有不妥之处请指正。可能是我没有针对我的问题搜索正确的词/短语组合。我正在使用Ruby1.9.3和Padrinov.0.10.6。注意:我还提到了SOquestion,但它没有帮助。 最佳答案 我没用过Pa

  5. 区块链入门教程(6)--WeBASE-Front节点前置服务安装 - 2

    文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定

  6. ruby-on-rails - rails 教程 : Putting flash messages in partial yields error "undefined method ` each' for nil:NilClass"? - 2

    这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:FlashMessagesinPartials(Rails3)我正在做MichaelHartl的Railstutorial和listing7.26将flash消息添加到应用程序布局:...">...这很好用。但是,我试图通过在我的部分文件夹中创建一个_flash.html.erb来清理这段代码...">-->...并且比使用......在我的应用程序布局中,我的所有Rspec测试开始失败,每个测试都显示以下消息:Failure/Error:before{visitsignup_path}ActionView:

  7. ruby-on-rails - Ruby on Rails 教程 - 5.26 - Sublime Text "Unable to Save"新文件 "spec/support/utilities.rb" - 2

    我正在使用SublimeText2,同时遵循MichaelHartl的RubyonRails教程。可以在http://ruby.railstutorial.org/book/ruby-on-rails-tutorial找到我所指的教程的具体部分。(ctrl+F“list5.26”)。我能够创建规范/支持文件。但是,在尝试创建spec/support/utilities.rb文件时,我收到消息“无法保存~/rails_projects/sample_app/spec/support/utilities.rb”。有人知道为什么会这样吗?SublimeText论坛上有人似乎遇到了完全相同的问

  8. 华为ensp详细安装包、安装教程及所遇问题 - 2

    目录一、安装包链接二、安装详细步骤1.安装Wireshark和WinPcap2.安装OracleVMVirtualBox3.安装ensp三、安装后注册四、启动路由器出现40错误怎么解决一、安装包链接二、安装详细步骤链接:https://pan.baidu.com/s/1QbUUYMOMIV2oeIKHWP1SpA?pwd=xftx提取码:xftx1.安装Wireshark和WinPcap找到Wireshark安装包所在文件夹,双击它,按照以下步骤安装。2.安装OracleVMVirtualBox找到OracleVMVirtualBox安装包所在文件夹,双击它,按照以下步骤安装。注:可自定义安装

  9. 【云计算】私有云在VMware下虚拟机的创建与配置(图文教程) - 2

    【适用平台】私有云   说明:完成私有云部分是需要两台虚拟机的,分别为controller、compute两个节点,但我们只需配置一台,然后克隆就方便多啦!需要用到的映射文件:关于vm的安装我就不介绍的,毕竟挺简单的,下面让我们看看基于私有云模块中,虚拟机的搭建吧。1、创建新的虚拟机,这里一般我会选择自定义,毕竟后面的配置都要根据私有云相关来进行搭建,会比较复杂。(如果是基础的可以选择典型,典型的满足一般虚拟机的配置) 2、选择稍后安装操作系统会比较方便后续的选择,这里你也可以自己选择自己的映像文件(但不建议)  3、我们是基于Linux下操作的,所以选择Linux客户机操作系统,版本选择自己

  10. 关于如何为 PostgreSQL 编写存储过程的 Ruby 教程? - 2

    听说PostgreSQL的可以用Ruby写存储过程但我一直没能找到更多关于它的信息,教人们如何实际去做。有人可以为此推荐好的资源。谢谢 最佳答案 显然,您需要安装PL/Ruby。之后,你可以写:CREATEFUNCTIONruby_max(int4,int4)RETURNSint4AS'ifargs[0].to_i>args[1].to_ireturnargs[0]elsereturnargs[1]end'LANGUAGE'plruby';查看其GitHubrepository安装说明。

随机推荐