本章内容写pandas库里的表格dataframe的相关使用。

内容包括:表格的建立(传入参数和设置index),添加行/列(append),表格的筛选删除行/列(drop),表格排序数据透视(df.pivot),表格划分groupby)等。

1. 建立表格df=pd.DataFrame(data,columns,index)

一般创建形式如下:

df=pd.DataFrame(data,columns=columns,index=index)

三个参数,参数1data建立表格所需数据,二维数组;参数2column为列名,一维数组,当创建形式维字典创建时,不需要列名参数,同时参数1是字典;参数3是索引,一位数组,可有可无,默认是0,1,2……

(1)建立一个空的框架:

df=pd.DataFrame()输出:
Empty DataFrame
Columns: []
Index: []

此时没有传入参数,建立的是一个空表格。

(2)传入一个二维列表

data=[['zhang',10],['li',20],['wang',15]]
df=pd.DataFrame(data,columns=['Name','Age'])

同时在后面可以设置数据类型dtype=float,可以将表格中的数字数据自动转换成浮点数。

注意,此处一定是二维列表,或者字典。

(3)字典创建:

data= {'Name':['zhang','li','wang'],'Age':[10,20,30]}
df=pd.DataFrame(data)

字典创建列名自动带入了字典键,键值为表格元素。

(4)关于声明表头

可以在创建表格时声明表头,当特定表头的元素不存在,填充为NaN。

data=[{'a':1,'b':2},{'a':3,'b':4,'c':5}]
df1=pd.DataFrame(data,columns=['a','b'])
df2=pd.DataFrame(data,columns=['a','d'])输出:a  b
0  1  2
1  3  4a   d
0  1 NaN
1  3 NaN

2. 添加元素df['column_name'],df.loc,df.iloc,df.append

分为添加行和添加列。

关于添加列,只需要df['column_name']=[]即可,默认添加到最后一列;当想添加到指定的位置时,采用df.insert()方法;

关于添加行,有三种方法。首先df.iloc[]=[],参数为数字,会被覆盖;其次df.loc[],参数为索引名Index,根据索引名添加;最后df.append(),将两个表格合成一个。

添加列:

(1)添加到最后一列

df1['score']=[80,98,67,90]

(2)具体插入某一列到位置:df.insert(iloc,column,value)

三个参数,插入位置,列名,插入值列表:

df1.insert(2,'birth',['1995-07-01','1998-09-04','1993-11-03','1994-04-17'])

(3)添加一行:df.iloc[index]

index是整数,表示添加到第几行,原数据会被覆盖,且不能超过len(dataframe);

data=[{'a':1,'b':2},{'a':3,'b':4}]
df1=pd.DataFrame(data,columns=['a','b'],index=['first','second'])
df1.iloc[0]=[6,7]输出:a  b
first   6  7
second  3  4

(4)df.loc[]方法

根据索引添加,此时添加的数值使用给定的索引。

当添加的索引值已经存在时,更改不存在时添加到最后一行

一般这种方法,表格的索引都是自定义的。

data=[{'a':1,'b':2},{'a':3,'b':4}]
df1=pd.DataFrame(data,columns=['a','b'],index=['first','second'])
df1.loc['third']=[9,10]输出:a   b
first   1   2
second  3   4
third   9  10data=[{'a':1,'b':2},{'a':3,'b':4}]
df1=pd.DataFrame(data,columns=['a','b'])
df1.loc[3]=[6,7]输出:a  b
0  1  2
1  3  4
3  6  7

(5)df.append:添加到最后一行

这是需要创建两个表格,然后拼接成一个。需要注意参数ignore_index,默认保留原索引,改为True时表示重新排序索引。

一般插入一个新的一项时,采用简单方法构建一个新的表格,然后append到目标表格去。

data=[[1,2],[3,4]]
df1=pd.DataFrame(data,columns=['a','b'])
data=[[5,6],[7,8]]
df2=pd.DataFrame(data,columns=['a','b'])
df=df1.append(df2,ignore_index=True)输出:a  b
0  1  2
1  3  4
2  5  6
3  7  8

3. 不同dataframe的拼接方法df1.merge(df2,on,how)

df=df1.merge(df2, on=' 合并的列名 ', how=' outer')

how表示内连接(inner)或者外连接(outer):内连接表示保留共有元素,外连接表示保留所有元素,没有值的进行NaN填充;

同时,合并列名也可以选择多个。

df1=pd.DataFrame(data1,columns=['Name','Sex','Age'])
df2=pd.DataFrame(data2,columns=['Name','Weights','Heights'])
df_merge=df1.merge(df2,on='Name',how='outer')
df_merge2=df1.merge(df2,on='Name',how='inner')输入:
3
zhao male 15
qian female 1
sun male 75
2
zhao 100 112
qian 147 256输出:Name     Sex  Age  Weights  Heights
0  zhao    male   15    100.0    112.0
1  qian  female    1    147.0    256.0
2   sun    male   75      NaN      NaNName     Sex  Age  Weights  Heights
0  zhao    male   15      100      112
1  qian  female    1      147      256

总结博客见:pandas dataframe的合并(append, merge, concat) - GUXH - 博客园 (cnblogs.com)

4. 更改dataframe中的值df.loc和df.iloc[index,column]

三种方法,df.iloc[],根据索引位置来查找,参数都为整数,表示几行几列,等价于df.iat

df.loc[],参数为index名和column名,等价于df.at

5. dataframe按照某列排序df.sort_values(by,inplace,ascending)

格式为:df.sort_values(by='A',inplace=True, ascending=True),参数1表示按哪个列进行排序,会在原dataframe上进行修改

df.sort_values(by='A',inplace=True, ascending=True)输出:A  B
1  0  9
2  4  8
1  6  3
0  7  5
0  8  5

6. 取指定范围内的值df.loc[行1:行末,列1:列末],df.iloc

有loc方法和iloc方法。loc方法通过index和column来取,不能通过数字,iloc方法通过数字索引来去,不能使用索引名。

同时需要注意,iloc方法按照数字来取时,不包含最后一个元素。

print(df_merge1.loc[1:2,'Sex':'Heights'])
print(df_merge1.iloc[0:2,2:4])输出:Name     Sex  Age  Weights  Heights
0  zhao    male   15    100.0    112.0
1  qian  female    1    147.0    256.0
2   sun    male   75      NaN      NaNSex  Age  Weights  Heights
1  female    1    147.0    256.0
2    male   75      NaN      NaNAge  Weights
0   15    100.0
1    1    147.0

8.删除指定行

(133条消息) 12_Pandas.DataFrame删除指定行和列(drop)_饺子大人的博客-CSDN博客_dataframe删除指定行

9. 使用groupby对表格进行划分

(1)

# for i in df.groupby('Group'):
#     print(i)
df1=df['Sales'].groupby(df['Group']).sum()
print(df1)
df1=df['Sales'].groupby(df['Mon']).sum()
print(df1)

10. 数据透视表格

df.pivot(index='Mon',columns='Part',values='Num')
df=pd.DataFrame(data,columns=['Mon','Part','Num','Price'])
print(df)
print(df.pivot(index='Mon',columns='Part',values='Num'))
print(df.pivot(index='Mon',columns='Part',values='Price'))Mon Part  Num  Price
0    1    A    1      2
1    1    B    3      4
2    1    C    5      6
3    1    D    7      8
4    1    E    9     10
5    2    A   11     12
6    2    B   13     14
7    2    C   15     16
8    2    D   17     18
9    2    E   19     20
Part   A   B   C   D   E
Mon
1      1   3   5   7   9
2     11  13  15  17  19
Part   A   B   C   D   E
Mon
1      2   4   6   8  10
2     12  14  16  18  20

11. 添加一行的平均值

df['Mean']=df.apply(lambda x:x.mean(),axis=1)

并添加一列进去

df.mean

12. 筛选

如果想要筛选出 B列大于零 的

df1 = df[df['B']>0]

如果要根据B、C两列来筛选数据,但最终只显示A、D两列的数据:

df4 = df[['A', 'D']][(df['B']>0)&(df['C']<0)]

【python-NOJ-季总结】—【第八季:Pandas库】—表格Dataframe的建立和使用相关推荐

  1. python dataframe 列_python pandas库中DataFrame对行和列的操作实例讲解

    用pandas中的DataFrame时选取行或列: import numpy as np import pandas as pd from pandas import Sereis, DataFram ...

  2. python科学计算笔记(八)pandas大数据HDF5硬盘操作方式

    大数据分析,内存不够用怎么办? 当然,你可以升级你的电脑为超级电脑. 另外,你也可以采用硬盘操作. 本文示范了硬盘操作的一种可能的方式. 本文基于:win10(64) + py3.5 本人电脑配置:4 ...

  3. 用python画熊_Python数据可视化:Pandas库,只要一行代码就能实现

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章一级AI入门学习 ,作者小伍哥 刚接触Python的新手.小白,可以复制下面的链接去免费观 ...

  4. python数据写入到excel不同sheet_Python3 pandas库 (32) 将数据写入Excel多个sheet

    在实际使用报表的时候,常常是一个excel文件里面包含多个sheet,这些sheet放在一个文件里面方便管理,也方便阅读. 将数据内容分开存在不同的sheet里面是excel经常遇到的操作.操作多了, ...

  5. python——pandas库之DataFrame数据结构基础

    DataFrame简介 dataframe表示的是矩阵的数据表,每一列可以是不同的值类型,可以看作一个共享相同索引的Series字典.在dataframe中,数据被存储为一个以上的二维块 1.利用等长 ...

  6. 【python】pandas库pd.DataFrame.corr、numpy库np.corrcoef求解相关系数

    - 一.首先生成数据: 1.df 数据: import pandas as pd from pandas import DataFrame,Series df = pd.DataFrame(np.ra ...

  7. Python学习教程(Python学习路线):如何正确使用Pandas库提升项目的运行速度?...

    Python学习教程:如何正确使用Pandas库提升项目的运行速度? 如果你从事大数据工作,用Python的Pandas库时会发现很多惊喜.Pandas在数据科学和分析领域扮演越来越重要的角色,尤其是 ...

  8. python数据分析与展示--Pandas库入门

    一.Pandas库的引用 Pandas是python第三方库,通过了高性能易用的数据类型和分析工具;Pandas库包含了Series,DataFrame两个数据类型,基于这两个数据类型可以实现基本,运 ...

  9. 【Pandas库】(3) DataFrame的创建方法及基本操作

    各位同学好,今天给大家介绍一下Pandas库中DataFrame类型数据的创建方法和基本操作. 文章内容如下: (1)使用字典类创建. 字典类有:①数组.列表.元组构成的字典:②Series构造的字典 ...

  10. Pandas库(1):DataFrame类

    Pandas库围绕Series类型和DataFrame类型这两种数据结构,提供了一种高效便捷的数据处理方式. 一.DataFrame类概述 1.Series是pandas库的一维数据类型,DateFr ...

最新文章

  1. CF331A1,331A2
  2. 做一个略调皮的个人主页--相册与随笔篇
  3. java实现qq_java实现的类似qq聊天系统
  4. 8086存储器编址 和 I/O编址
  5. 对称密钥加密算法 对称轮数_选择Java加密算法第2部分–单密钥对称加密
  6. React Native 从入门到原理
  7. linux输入法小结
  8. leetcdoe 26 删除排序数组中的重复项(python)
  9. eclipse hadoop开发环境配置
  10. ctb伺服驱动器说明书_伺服驱动器 CTB BK Servo
  11. 彻底卸载SQL2005记录
  12. 条码打印软件如何设置双排标签纸尺寸
  13. 腾讯2019广告算法大赛总结
  14. JAVA---集合子接口之Set
  15. 回归模型效果评估系列3-R平方
  16. 文字前的小图标HTML,Font Awesome实现文字链右边加一个箭头图标
  17. 深入学习HTTP协议
  18. 跟着团子学SAP SD:项目里程碑开票流程演示(含预收账款“开票”及正式开票) VF01
  19. 今天是2019年大年三十儿,写了几幅字,给大家拜个年啦
  20. 打造全球TOD典范城市!成都准备这么干

热门文章

  1. 合肥科学岛安光所计算机应用,国家大气污染防治攻关联合中心成立 合肥科学岛安光所承担重任...
  2. 伽玛校正(Gamma Correction)
  3. 开发Connext DDS传输插件不用求人,看这一篇就够了
  4. AD9361常用配置概述
  5. 3.Ubuntu/Deepin下安装Monaco/Menlo字体
  6. 基于51单片机的CC2541蓝牙透传模块的无线通信
  7. 二本天坑,一战成硕,上岸北邮
  8. 27 log4j2发送Syslog日志出现乱码错误
  9. 2019华为软件精英挑战赛经验总结
  10. JAVA基于《美国当代英语语料库COCA词频20000》PDF提取的纯单词文件