目录

一、DataFrame对象的创建

1、根据列表创建:

情况1:由二维列表

情况2:由元组tuple组成的列表

情况3:由字典dict组成的列表

情况4:由数组array组成的列表

情况5:由序列series组成的列表

2、根据字典创建:

情况1:由元组tuple组成的字典

情况2:由列表list组成的字典

情况3:由字典dict组成的字典

情况4:由数组array组成的字典

情况5:由序列series组成的字典

情况6:由复合式的字典

3、根据二维数组ndarray创建:

二、DataFrame常用属性

三、DataFrame的访问

1、读取dataframe表中的行

2、读取dataframe表中的列

3、读取dataframe表中的元素

4、条件读取

四、DataFrame数据修改

1、修改DataFrame表中的行

2、修改DataFrame表中的列

3、修改DataFrame表中的元素

五、遍历

1、iterrows(): 按行遍历

2、itertuples(): 按行遍历

3、iteritems():按列遍历


一、DataFrame对象的创建

1、根据列表创建:

行索引是index,列索引是columns

情况1:由二维列表

默认的 index 和 columns

import pandas as pddata = [['张三', 23, '男'], ['李四', 27, '女'], ['王二', 26, '女']]
df = pd.DataFrame(data)
print(df)

运行结果:

0 1 2
0 张三 23 男
1 李四 27 女
2 王二 26 女

指定索引ndex 和 columns值:

import pandas as pddata = [['张三', 23, '男'], ['李四', 27, '女'], ['王二', 26, '女']]
df = pd.DataFrame(data, columns=['姓名', '年龄', '性别'], index=['a', 'b', 'c'])
print(df)

运行结果:

姓名 年龄 性别
a 张三 23 男
b 李四 27 女
c 王二 26 女

情况2:由元组tuple组成的列表

import pandas as pddata = [('张三', 23, '男'), ('李四', 27, '女'), ('王二', 26, '女')]
df = pd.DataFrame(data, columns=['姓名', '年龄', '性别'], index=['a', 'b', 'c'])
print(df)

运行结果:

姓名 年龄 性别
a 张三 23 男
b 李四 27 女
c 王二 26 女

情况3:由字典dict组成的列表

import pandas as pddata = [{'姓名': '张三', '年龄': 23, '性别': '男'}, {'姓名': '李四', '年龄': 27, '性别': '男'},{'姓名': '王二', '年龄': 26}
]
# 缺少的值自动添加NaN
df = pd.DataFrame(data)
print(df)

运行结果:

姓名 年龄 性别
0 张三 23 男
1 李四 27 男
2 王二 26 NaN

情况4:由数组array组成的列表

import pandas as pd
import numpy as npdata = [np.array(('张三', 23, '男')),np.array(('李四', 27, '女')),np.array(('王二', 26, '女'))
]
df = pd.DataFrame(data, columns=['姓名', '年龄', '性别'])
print(df)

运行结果:

姓名 年龄 性别
0 张三 23 男
1 李四 27 女
2 王二 26 女

import pandas as pd
import numpy as npdata = [np.array(('张三', '李四', '王二')),np.array((23, 27, 26)),np.array(('男', '女', '女'))
]
df = pd.DataFrame(data, index=['姓名', '年龄', '性别'])
print(df)

运行结果:

0 1 2
姓名 张三 李四 王二
年龄 23 27 26
性别 男 女 女

情况5:由序列series组成的列表

import pandas as pddata = [pd.Series(['张三', '李四', '王二'], index=['a', 'b', 'c']),pd.Series([23, 27], index=['a', 'b']),pd.Series(['男', '女', '女'], index=['a', 'b', 'c'])
]
# 序列里的index作为dataframe表的columns索引
# 缺少值自动添加NaN
df = pd.DataFrame(data, index=['姓名', '年龄', '性别'])
print(df)

运行结果:

a b c
姓名 张三 李四 王二
年龄 23.0 27.0 NaN
性别 男 女 女

2、根据字典创建:

该字典必须满足:每一个key对应的value长度都相同:

情况1:由元组tuple组成的字典

import pandas as pddata = {'姓名': ('张三', '李四', '王二'), '年龄': (23, 27, 26), '性别': ('男', '女', '女')
}
df = pd.DataFrame(data)
print(df)

运行结果:

姓名 年龄 性别
0 张三 23 男
1 李四 27 女
2 王二 26 女

情况2:由列表list组成的字典

import pandas as pddata = {'姓名': ['张三', '李四', '王二'], '年龄': [23, 27, 26],'性别': ['男', '女', '女']
}
df = pd.DataFrame(data)
print(df)

运行结果:

姓名 年龄 性别
0 张三 23 男
1 李四 27 女
2 王二 26 女

情况3:由字典dict组成的字典

import pandas as pddata = {'姓名': {'1': '张三', '2': '李四', '3': '王二'},'年龄': {'1': 23, '2': 27, '3': 26},'性别': {'1': '男', '2': '女', '3': '女'}}
# data.key 作为datafreme表的columns;
# data.value中的key 作为dataframe表的index
df = pd.DataFrame(data)
print(df)

运行结果:

姓名 年龄 性别
1 张三 23 男
2 李四 27 女
3 王二 26 女

情况4:由数组array组成的字典

import pandas as pd
import numpy as npdata = {'姓名': np.array(('张三', '李四', '王二')), '年龄': np.array((23, 27, 26)), '性别': np.array(('男', '女', '女'))
}
df = pd.DataFrame(data)
print(df)

运行结果:

姓名 年龄 性别
0 张三 23 男
1 李四 27 女
2 王二 26 女

情况5:由序列series组成的字典

import pandas as pddata = {'姓名': pd.Series(['张三', '李四', '王二'], index=['a', 'b', 'c']), '年龄': pd.Series([23, 27], index=['a', 'b'])
}
# 序列里的index作为dataframe表的index索引
# 字典里的key作为dataframe表的columns索引
df = pd.DataFrame(data)
print(df)

运行结果:

姓名 年龄
a 张三 23.0
b 李四 27.0
c 王二 NaN

情况6:由复合式的字典

import pandas as pddata = {'单位': '1', '姓名': ['张三', '李四', '王二'], '年龄': [23, 27, 26], '性别': ['男', '女', '女']}
# 每行的单位列自动添加
df = pd.DataFrame(data)
print(df)

运行结果:

单位 姓名 年龄 性别
0 1 张三 23 男
1 1 李四 27 女
2 1 王二 26 女

3、根据二维数组ndarray创建:

import pandas as pd
import numpy as nparray1 = np.array([['张三', 23, '男'], ['李四', 27, '女'], ['王二', 26, '女']])
df = pd.DataFrame(array1, columns=['姓名', '年龄', '性别'], index=['a', 'b', 'c'])
print(df)

运行结果:

姓名 年龄 性别
a 张三 23 男
b 李四 27 女
c 王二 26 女

二、DataFrame常用属性

import pandas as pddata = {'姓名': ['张三', '李四', '王二'], '年龄': [23, 27, 26], '性别': ['男', '女', '女']}
df = pd.DataFrame(data)# 返回对象数据形状 即:三行三列
print(df.shape, '\n')
# 返回序列的值
print(df.values, '\n')
# 返回行索引
print(df.index, '\n')
# 返回列索引
print(df.columns, '\n')
# 返回列标签(只针对dataframe数据结构)
print(df.columns.tolist())
# 返回元素数据类型
print(df.dtypes, '\n')
# 返回对象的维度
print(df.ndim, '\n')
# 返回对象的个数
print(df.size, '\n')

三、DataFrame的访问

1、读取dataframe表中的行

import pandas as pd
import numpy as nparr = np.array([['赵一', 23, '男'], ['钱二', 27, '女'], ['孙三', 26, '女'], ['李四', 12, '男']])
df1 = pd.DataFrame(arr, columns=['姓名', '年龄', '性别'])# df[row_index_start: row_index_end]
# # 左闭右开
print(df1[0:1])  # 第1行
print(df1[0:])  # 第1行及之后的行,df的全部数据
print(df1[:2])  # 第3行之前的数据(不包含第3行)
print(df1[1:3])  # 第2行到第3行(不含第4行)
print(df1[-3:-1])  # 倒数第3行和倒数第2行,没有-0
print(df1[-1:])  # 最后一行
# # 左闭右闭
print(df1['a':'a'])  # 第1行
print(df1['a':'d'])  # 第1行及之后的行,df的全部数据
print(df1[:'b'])  # 第3行之前的数据(不包含第3行)
print(df1['b':'c'])  # 第2行到第3行(不含第4行)
print(df1['d':])  # 最后一行
# df[column_index][row_index]
print(df1[['姓名', '年龄']][0:3])  #  第1列和第2列的第1行到第3行 数据# df.iloc[row_inde_位置, column_index_位置]
print(df1.iloc[[1, 3], 0:2])   # 第2行和第4行,从第1列到第2列(左闭右开不包含第3列)的数据
print(df1.iloc[1:3, [1, 2]])     # 第2行到第3行(不包含第1,4行),第2列和第3列的数据# df.loc[row_index, column_index]
print(df1.loc[['b', 'd'], '姓名': '年龄'])  # 第2行和第4行,从第1列到第2列(左闭右开不包含第3列)的数据
print(df1.loc['b': 'c', ['年龄', '性别']])   # 第2行到第3行(不包含第1,4行),第2列和第3列的数据

2、读取dataframe表中的列

import pandas as pd
import numpy as nparr = np.array([['赵一', 23, '男'], ['钱二', 27, '女'], ['孙三', 26, '女'], ['李四', 12, '男']])
df1 = pd.DataFrame(arr, columns=['姓名', '年龄', '性别'], index=['a', 'b', 'c', 'd'])# df[[column_index_start, column_index_end]]
print(df1['姓名'])  # 第1列
print(df1[['姓名', '性别']])  # 第1列和第3列
print(df1.loc[:, '姓名'])  # 第1列
print(df1.iloc[:, 0])  # 第1列

3、读取dataframe表中的元素

import pandas as pd
import numpy as nparr = np.array([['赵一', 23, '男'], ['钱二', 27, '女'], ['孙三', 26, '女'], ['李四', 12, '男']])
df1 = pd.DataFrame(arr, columns=['姓名', '年龄', '性别'], index=['a', 'b', 'c', 'd'])# 读取第1行第2列 数据
# df[column_index][row_index]
print(df1['年龄'][0])
print(df1['年龄']['a'])
#  df.iloc[row_index_位置, column_index_位置]
print(df1.iloc[0, 1])
# df.loc[row_index, column_index]
print(df1.loc['a', '年龄'])
# df.iat[row_index, column_index]
print(df1.iat[0, 1])
# df.at[row_index, column_index]
print(df1.at['a', '年龄'])  

4、条件读取

  • df.loc[df['gender']=='m','name'] # 选取gender列是m,name列的数据
  • df.loc[df['gender']=='M',['name','age']] #选取gender列是m,name和age列的数据
import pandas as pd
import numpy as nparr = np.array([['赵一', 23, '男'], ['钱二', 27, '女'], ['孙三', 26, '女'], ['李四', 12, '男']])
df1 = pd.DataFrame(arr, columns=['姓名', '年龄', '性别'], index=['a', 'b', 'c', 'd'])# 读取姓名为‘李四’的‘性别’
print(df1.loc[df1['姓名'] == '李四', '性别'])
# 读取性别是‘女’的 ‘姓名’和‘年龄’
print(df1.loc[df1['性别'] == '女', ['姓名', '年龄']])
# 读取‘姓名’是‘张三’和‘王二’所在行的‘性别’
print(df1.loc[(df1['姓名'] == '赵一') | (df1['姓名'] == '钱二'), '性别'])

注:df.iloc 和 df.loc 的区别

  • df.iloc[row_index位置, column_index位置]
  • df.loc[row_index, column_index]
import pandas as pd
import numpy as nparr = np.array([['赵一', 23, '男'], ['钱二', 27, '女'], ['孙三', 26, '女'], ['李四', 12, '男']])
df1 = pd.DataFrame(arr, columns=['姓名', '年龄', '性别'], index=[3, 2, 1, 0])print(df1.iloc[:3])  # 前3行数据
print(df1.loc[:3])  # row_index = 3 那一行数据

运行结果:

df1.iloc[:3]:

姓名 年龄 性别
3 赵一 23 男
2 钱二 27 女
1 孙三 26 女

df1.loc[:3]:

姓名 年龄 性别
3 赵一 23 男

四、DataFrame数据修改

1、修改DataFrame表中的行

import pandas as pd
import numpy as nparr = np.array([['赵一', 23, '男'], ['钱二', 27, '女'], ['孙三', 26, '女'], ['李四', 12, '男']])
df1 = pd.DataFrame(arr, columns=['姓名', '年龄', '性别'], index=['a', 'b', 'c', 'd'])# 将第1行第2列改为 '19' 的四种方法
df1['年龄'][0] = 19
df1['年龄']['a'] = 19
df1.loc['a', '年龄'] = 19
df1.iloc[0, 1] = 19
print(df1)

2、修改DataFrame表中的列

import pandas as pd
import numpy as nparr = np.array([['赵一', 23, '男'], ['钱二', 27, '女'], ['孙三', 26, '女'], ['李四', 12, '男']])
df1 = pd.DataFrame(arr, columns=['姓名', '年龄', '性别'], index=['a', 'b', 'c', 'd'])# 将第1行 改为 ['aa', 23, '女'] 的四种方法
df1[0:1] = ['aa', 23, '女']
df1['a':'a'] = ['aa', 23, '女']
df1.loc['a'] = ['aa', 23, '女']
df1.iloc[0, :] = ['aa', 23, '女']
print(df1)

3、修改DataFrame表中的元素

import pandas as pd
import numpy as nparr = np.array([['赵一', 23, '男'], ['钱二', 27, '女'], ['孙三', 26, '女'], ['李四', 12, '男']])
df1 = pd.DataFrame(arr, columns=['姓名', '年龄', '性别'], index=['a', 'b', 'c', 'd'])# 将第1列 改为[11, 12, 13, 14] 的三种方法
df1['年龄'] = [11, 12, 13, 14]
df1.loc[:, '年龄'] = [11, 12, 13, 14]
df1.iloc[:, 1] = [11, 12, 13, 14]
print(df1)

五、遍历

import pandas as pd
import numpy as np
​
arr = np.array([['赵一', 23, '男'], ['钱二', 27, '女'], ['孙三', 26, '女'], ['李四', 12, '男']])
df1 = pd.DataFrame(arr, columns=['姓名', '年龄', '性别'], index=['a', 'b', 'c', 'd'])# 读取‘姓名’列
for i in df1.index:print(df1['姓名'][i])# 读取第1行
for j in df1.columns:print(df1[j][0])# 读取每个元素
for i in df1.index:for j in df1.columns:print(df1[j][i])

1、iterrows(): 按行遍历

iterrows(): 按行遍历,将DataFrame的每一行迭代为(index, Series)对,可以通过row[name]对元素进行访问。

import pandas as pd
import numpy as nparr = np.array([['赵一', 23, '男'], ['钱二', 27, '女']])
df1 = pd.DataFrame(arr, columns=['姓名', '年龄', '性别'], index=['a', 'b'])for index, row in df1.iterrows():print('index:', index)  # 输出每行的索引值print('row:', row)  # 输出每行的值  row:<class 'pandas.core.series.Series'>print('姓名年龄:', row['姓名'], row['年龄'])  # 输出每一行‘姓名’‘年龄’两列的值

运行结果:

index: a
row: 姓名 赵一
        年龄 23
        性别 男
        Name: a, dtype: object
姓名年龄: 赵一 23
index: b
row: 姓名 钱二
        年龄 27
        性别 女
        Name: b, dtype: object
姓名年龄: 钱二 27

2、itertuples(): 按行遍历

itertuples(): 按行遍历,将DataFrame的每一行迭代为元祖,可以通过row[name]对元素进行访问,比iterrows()效率高。

import pandas as pd
import numpy as nparr = np.array([['赵一', 23, '男'], ['钱二', 27, '女']])
df1 = pd.DataFrame(arr, columns=['姓名', '年龄', '性别'], index=['a', 'b'])for row in df1.itertuples():print(row)  # row:<class 'pandas.core.frame.Pandas'>print(getattr(row, '姓名'), getattr(row, '年龄'))   # 输出每一行‘姓名’‘年龄’两列的值

运行结果:

Pandas(Index='a', 姓名='赵一', 年龄='23', 性别='男') 赵一 23
Pandas(Index='b', 姓名='钱二', 年龄='27', 性别='女') 钱二 27

3、iteritems():按列遍历

iteritems():按列遍历,将DataFrame的每一列迭代为(列名, Series)对,可以通过row[index]对元素进行访问。

import pandas as pd
import numpy as nparr = np.array([['赵一', 23, '男'], ['钱二', 27, '女']])
df1 = pd.DataFrame(arr, columns=['姓名', '年龄', '性别'], index=['a', 'b'])for index, row in df1.iteritems():print('列名:', index)  # 输出列名print('每列的值:', row)  # row <class 'pandas.core.series.Series'>print('每列的第1行的值:', row[0])  # 输出各列
​

运行结果:

列名: 姓名
每列的值: a 赵一
                b 钱二
                Name: 姓名, dtype: object
每列的第1行的值: 赵一
列名: 年龄
每列的值: a 23
                b 27
                Name: 年龄, dtype: object
每列的第1行的值: 23
列名: 性别
每列的值: a 男
                b 女
                Name: 性别, dtype: object
每列的第1行的值: 男

python学习--DataFrame相关推荐

  1. python学习路线-2020年 Python学习路线及学习目标规划 拿走不谢!

    找不到完整的学习路线?小编分享2020年Python学习路线及学习目标规划拿走不谢,Python作为今年来特别受欢迎的编程语言,是AI时代头牌语言AI领域的敲门砖,Python已经入驻小学生教材,将来 ...

  2. python:dataframe

    相关:Series一些函数用法 目录 DataFrame reindex drop loc和iloc apply 排序 汇总统计和计算 缺失值处理 数据合并 数据转换:对数据的过滤.清理以及其他的转换 ...

  3. python 数据去重_科学网—python学习——根据条件提取数据,并去重 - 李立的博文...

    [Python字符串提取] 摘要:根据要求进行字符串的提取,并去重 导入分析所需的库import pandas as pd 构造数据集 as1 = pd.DataFrame({'a':[1,2,3,4 ...

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

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

  5. python学习视频-2018年最新Python学习路线图(内含大纲+视频+工具)

    Python学习路线图制作者的话: 据悉,Python已经入驻小学生教材,未来不学Python不仅知识会脱节,可能与小朋友都没有了共同话题.所以,从今天起不要再找借口,不要再说想学Python却没有资 ...

  6. 自学python-python自学起来难不难?python学习路线分享

    Python算是编程里最简单的一门语言了,很多人依然学不会,找不到方法很麻烦,选择大于努力,就比如有的人东学一点西学一点,始终得不到要领,终归原因是学习方法有错误,有的人今天学一些后天学一些,三天打鱼 ...

  7. python学习路线图(初级阶段,中级阶段,高级阶段)

    python学习路线图 1 预备知识 1.1 python简介 1.2 程序设计思想 1.3 安装python 1.3.1 windows安装python 1.3.2 Linux安装python 1. ...

  8. 2018年最新Python学习路线图

    Python学习路线图制作者的话: 据悉,Python已经入驻小学生教材,未来不学Python不仅知识会脱节,可能与小朋友都没有了共同话题.所以,从今天起不要再找借口,不要再说想学Python却没有资 ...

  9. 2018年最新Python学习路线图(内含大纲+视频+工具)

    Python学习路线图制作者的话: 据悉,Python已经入驻小学生教材,未来不学Python不仅知识会脱节,可能与小朋友都没有了共同话题.所以,从今天起不要再找借口,不要再说想学Python却没有资 ...

最新文章

  1. 智能车竞赛技术报告 | 智能车视觉 - 武汉理工大学 - WHY
  2. JDBC 此驱动程序不支持 Java Runtime Environment (JRE) 1.6 版
  3. mac 下idea光标问题
  4. 8086指令(II)
  5. 存储型xss漏洞怎么解决_FinDOMXSS:一款针对DOM型XSS漏洞的快速扫描工具
  6. ES6学习笔记六(Iterator和for..of)
  7. .net 垃圾回收机制
  8. java虚拟机参数优化_JAVA虚拟机JVM参数优化(2):垃圾收集算法选择
  9. 做工程为什么不用python_为什么“python setup.py sdist”在项目根目录中创建不需要的“PROJECT-egg.info”?...
  10. java calendar 时分秒_Java中Calendar类的常用方法(对时间进行计算的类)
  11. 3°、6°带高斯-克吕格投影
  12. 将百度万年历存入自己的数据库
  13. 【MATLAB】三维图形绘制 ( plot3 函数 | plot3 绘图示例 | 2D 与 3D 关联 )
  14. SSAS Tabular
  15. qt中画出漂亮的函数曲线
  16. 【算法】快速排序算法原理及实现
  17. Android应用闪退异常java.lang.RuntimeException: Unable to instantiate application
  18. 【极客日常】解决UE4中FJsonObject转USTRUCT的坑
  19. 1、Vivado 安装及其破解
  20. 曙光服务器通过ipmi安装系统,曙光服务器ipmi部署记录版.docx

热门文章

  1. 【转】HTML5斯诺克桌球俱乐部【译】
  2. android l m8,HTC M8或于10月份升级Android L
  3. 计算机主板diy,DIY电脑配件立即选——主板篇
  4. STM32F429 笔记(一)- Keil 创建HAL工程
  5. October 2007
  6. javaScript 美化上传文件框(加预览移除效果)
  7. 共享出行化解城市交通难题(中)
  8. Qt快速转换路径(斜杠与反斜杠转换)
  9. oracle会计 英文,求助,关于cost management 的英文资料+翻译
  10. 从微软下载Windows11操作系统镜像