【python-NOJ-季总结】—【第八季:Pandas库】—表格Dataframe的建立和使用
本章内容写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的建立和使用相关推荐
- python dataframe 列_python pandas库中DataFrame对行和列的操作实例讲解
用pandas中的DataFrame时选取行或列: import numpy as np import pandas as pd from pandas import Sereis, DataFram ...
- python科学计算笔记(八)pandas大数据HDF5硬盘操作方式
大数据分析,内存不够用怎么办? 当然,你可以升级你的电脑为超级电脑. 另外,你也可以采用硬盘操作. 本文示范了硬盘操作的一种可能的方式. 本文基于:win10(64) + py3.5 本人电脑配置:4 ...
- 用python画熊_Python数据可视化:Pandas库,只要一行代码就能实现
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章一级AI入门学习 ,作者小伍哥 刚接触Python的新手.小白,可以复制下面的链接去免费观 ...
- python数据写入到excel不同sheet_Python3 pandas库 (32) 将数据写入Excel多个sheet
在实际使用报表的时候,常常是一个excel文件里面包含多个sheet,这些sheet放在一个文件里面方便管理,也方便阅读. 将数据内容分开存在不同的sheet里面是excel经常遇到的操作.操作多了, ...
- python——pandas库之DataFrame数据结构基础
DataFrame简介 dataframe表示的是矩阵的数据表,每一列可以是不同的值类型,可以看作一个共享相同索引的Series字典.在dataframe中,数据被存储为一个以上的二维块 1.利用等长 ...
- 【python】pandas库pd.DataFrame.corr、numpy库np.corrcoef求解相关系数
- 一.首先生成数据: 1.df 数据: import pandas as pd from pandas import DataFrame,Series df = pd.DataFrame(np.ra ...
- Python学习教程(Python学习路线):如何正确使用Pandas库提升项目的运行速度?...
Python学习教程:如何正确使用Pandas库提升项目的运行速度? 如果你从事大数据工作,用Python的Pandas库时会发现很多惊喜.Pandas在数据科学和分析领域扮演越来越重要的角色,尤其是 ...
- python数据分析与展示--Pandas库入门
一.Pandas库的引用 Pandas是python第三方库,通过了高性能易用的数据类型和分析工具;Pandas库包含了Series,DataFrame两个数据类型,基于这两个数据类型可以实现基本,运 ...
- 【Pandas库】(3) DataFrame的创建方法及基本操作
各位同学好,今天给大家介绍一下Pandas库中DataFrame类型数据的创建方法和基本操作. 文章内容如下: (1)使用字典类创建. 字典类有:①数组.列表.元组构成的字典:②Series构造的字典 ...
- Pandas库(1):DataFrame类
Pandas库围绕Series类型和DataFrame类型这两种数据结构,提供了一种高效便捷的数据处理方式. 一.DataFrame类概述 1.Series是pandas库的一维数据类型,DateFr ...
最新文章
- CF331A1,331A2
- 做一个略调皮的个人主页--相册与随笔篇
- java实现qq_java实现的类似qq聊天系统
- 8086存储器编址 和 I/O编址
- 对称密钥加密算法 对称轮数_选择Java加密算法第2部分–单密钥对称加密
- React Native 从入门到原理
- linux输入法小结
- leetcdoe 26 删除排序数组中的重复项(python)
- eclipse hadoop开发环境配置
- ctb伺服驱动器说明书_伺服驱动器 CTB BK Servo
- 彻底卸载SQL2005记录
- 条码打印软件如何设置双排标签纸尺寸
- 腾讯2019广告算法大赛总结
- JAVA---集合子接口之Set
- 回归模型效果评估系列3-R平方
- 文字前的小图标HTML,Font Awesome实现文字链右边加一个箭头图标
- 深入学习HTTP协议
- 跟着团子学SAP SD:项目里程碑开票流程演示(含预收账款“开票”及正式开票) VF01
- 今天是2019年大年三十儿,写了几幅字,给大家拜个年啦
- 打造全球TOD典范城市!成都准备这么干
热门文章
- 合肥科学岛安光所计算机应用,国家大气污染防治攻关联合中心成立 合肥科学岛安光所承担重任...
- 伽玛校正(Gamma Correction)
- 开发Connext DDS传输插件不用求人,看这一篇就够了
- AD9361常用配置概述
- 3.Ubuntu/Deepin下安装Monaco/Menlo字体
- 基于51单片机的CC2541蓝牙透传模块的无线通信
- 二本天坑,一战成硕,上岸北邮
- 27 log4j2发送Syslog日志出现乱码错误
- 2019华为软件精英挑战赛经验总结
- JAVA基于《美国当代英语语料库COCA词频20000》PDF提取的纯单词文件