DataFrame是一个表格型的数据结构,可以看成就是excel中的表格。

官方文档:https://pandas.pydata.org/docs/reference/frame.html

DataFrame的创建

DataFrame构造方法如下:

pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)

  • data:DataFrame的数据部分,可以是字典、二维数组、Series、DataFrame或其他可转换为DataFrame的对象,若不提供此参数,则创建一个空的DataFrame。
  • index:DataFrame的行索引,用于标识每行数据,可以是列表、数组、索引对象等,若不提供此参数,则创建一个默认的整数索引。
  • columns:DataFrame的列索引,用于标识每列数据。可以是列表、数组、索引对象等,若不提供此参数,则创建默认的整数索引。
  • dtype:指定DataFrame的数据类型,可以是NumPy的数据类型,例如np.int64、np.float64等,若不提供此参数,则根据数据自动推断数据类型。
  • copy:是否复制数据,默认为False,表示不复制数据,若设置为True,则复制输入的数据。

一维列表创建DataFrame

import pandas as pd

# 例1:单个列表创建
data = ["张三", "李四", "王五", "赵六"]
df = pd.DataFrame(data=data)
df

二维列表创建DataFrame

import pandas as pd

# 例2:二维列表创建DataFrame,设置列索引
data =[['Alex',10], ['Bob', 12], ['clarke', 13]]
df = pd.DataFrame(data=data, columns=['Name', 'Age'])
df

传递字典创建DataFrame

import pandas as pd

# 使用默认的行索引,注意:传入字典时字典的KEY成了列索引
data = {'Name': ['Tom', 'Jack', 'steve', 'Ricky'], 'Age': [28, 34, 29, 42]}
df = pd.DataFrame(data)
print(df)
print("*" * 50)
# 设置了行索引
data = {'Name': ['Tom', 'Jack', 'steve', 'Ricky'], 'Age': [28, 34, 29, 42]}
df = pd.DataFrame(data, index=['rank1', 'rank2', 'rank3', 'rank4'])
print(df)

传递字典列表创建DataFrame

import pandas as pd

data = [{'姓名': '张三', '性别': '男'}, {'姓名': '小红', '性别': '女', '语文': 80}]
# 传递字典列表来创建DataFrame
df = pd.DataFrame(data)
print(df)
print('*' * 50)
# 传递字典列表和行索引来创建DataFrame
df = pd.DataFrame(data, index=['first', 'second'])
print(df)
print('*' * 50)
# 指定的列索引与字典键相同
df = pd.DataFrame(data, index=['first', 'second'], columns=['姓名', '性别'])
print(df)
print('*' * 50)
# 指定的列索引,其中一个索引具有其他名称
df = pd.DataFrame(data, index=['first', 'second'], columns=['姓名', '班级'])
print(df)

通过Series对象创建

import pandas as pd

df1 = pd.Series({'california': 423967, 'Texas': 695662, 'New York': 141297, 'Florida': 170312, 'Illinois': 149995})
df2 = pd.Series({'california': 383521, 'Texas': 264193, 'New York': 191127, 'Florida': 195860, 'Illinois': 122135})
# 创建单列的DataFrame
df = pd.DataFrame(df1, columns=['area'])
print(df)
print("*" * 50)
# 创建多列的DataFrame对象
df = pd.DataFrame({'area': df1, 'population': df2})
print(df)

通过Numpy创建

import pandas as pd
import numpy as np a = np.random.randint(1, 10, (3, 2))
# 基于a数组建立DataFrame
df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
print(df)

DataFrame的属性

dataframe.T

df.T属性主要用来转置行和列,和 df.transpose() 实现的效果一样。

import pandas as pd
import numpy as np a = np.random.randint(1, 10, (3, 2))
# 基于a数组建立DataFrame
df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
print(df)
print("*" * 50)
print(df.T)

dataframe.axes

返回包含行索引和列索引的列表,可以通过 df.axes[0].tolist()list(df.axes[0]) 转成行索引列表,列索引列表同理。

import pandas as pd
import numpy as np a = np.random.randint(1, 10, (3, 2))
# 基于a数组建立DataFrame
df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
print(df)
print("*" * 50)
print(df.axes) # [Index(['a', 'b', 'c'], dtype='object'), Index(['foo', 'bar'], dtype='object')]
print(df.axes[0].tolist()) # ['a', 'b', 'c']
print(list(df.axes[0])) # ['a', 'b', 'c']

dataframe.dtypes

查看每列的数据类型。

import pandas as pd
import numpy as np a = np.random.randint(1, 10, (3, 2))
# 基于a数组建立DataFrame
df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
print(df)
print("*" * 50)
print(df.dtypes)

dataframe.ndim

获取DataFrame的维数。

import pandas as pd
import numpy as np a = np.random.randint(1, 10, (3, 2))
# 基于a数组建立DataFrame
df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
print(df)
print("*" * 50)
print(df.ndim) # 2

dataframe.shape

获取DataFrame的行数和列数,是一个元组。

import pandas as pd
import numpy as np a = np.random.randint(1, 10, (3, 2))
# 基于a数组建立DataFrame
df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
print(df)
print("*" * 50)
print(df.shape) # (3, 2)

dataframe.size

返回DataFrame中的元素个数。

import pandas as pd
import numpy as np a = np.random.randint(1, 10, (3, 2))
# 基于a数组建立DataFrame
df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
print(df)
print("*" * 50)
print(df.size) # 6

dataframe.values

返回一个所有行数据组成的二维的数组,每个元素是一个一维数组(也就是一行数据),可以通过 list(df.values)df.values.tolist() 转成python的列表类型。

import pandas as pd
import numpy as np a = np.random.randint(1, 10, (3, 2))
# 基于a数组建立DataFrame
df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
print(df)
print("*" * 50)
print(df.values) # [[8 6] [3 3] [8 7]]
print(list(df.values)) # [array([8, 6], dtype=int32), array([3, 3], dtype=int32), array([8, 7], dtype=int32)]
print(df.values.tolist()) # [[8, 6], [3, 3], [8, 7]]

dataframe.index

获取行索引,返回的是Index类型,可以通过 list(df.index) df.index.tolist() 转换成列表。

import pandas as pd
import numpy as np a = np.random.randint(1, 10, (3, 2))
df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
print(df)
print("*" * 50)
print(df.index) # Index(['a', 'b', 'c'], dtype='object')
print(df.index.values) # ['a' 'b' 'c']
print(list(df.index)) # ['a', 'b', 'c']
print(df.index.tolist()) # ['a', 'b', 'c']

dataframe.columns

获取列索引,返回的是Index类型,可以通过 list(df.columns)df.columns.tolist() 转换成列表。

import pandas as pd
import numpy as np a = np.random.randint(1, 10, (3, 2))
df = pd.DataFrame(a, columns=['foo', 'bar'], index=['a', 'b', 'c'])
print(df)
print("*" * 50)
print(df.columns) # Index(['foo', 'bar'], dtype='object')
print(df.columns.values) # ['foo' 'bar'],可用 df.columns.values.tolist() 转换成列表
print(list(df.columns)) # ['foo', 'bar']
print(df.columns.tolist()) # ['foo', 'bar']

【01】DataFrame的创建和属性的更多相关文章

  1. Pandas的基础操作(一)——矩阵表的创建及其属性

    Pandas的基础操作(一)——矩阵表的创建及其属性 (注:记得在文件开头导入import numpy as np以及import pandas as pd) import pandas as pd ...

  2. 继承自UITableView的类自带tableView属性,不需要在创建该属性,因为父类UITableView已经创建.

      继承自UITableView的类自带tableView属性,不需要在创建该属性,因为父类UITableView已经创建.   https://www.evernote.com/shard/s227 ...

  3. JS对象—数组总结(创建、属性、方法)

    JS对象—数组总结(创建.属性.方法) 1.创建字符串 1.1 new Array() var arr1 = new Array(); var arr2 = new Array(6); 数组的长度为6 ...

  4. Python 中使用动态创建类属性的机制实现接口之后的依赖

    我们在自动化测试中经常会需要关联用例处理,需要动态类属性: 推荐使用第二种方法: 创建:setattr() 获取:getattr() 两种,如何创建 类属性 loan_id # 第一种,创建 # 类名 ...

  5. DataFrame的创建

    DataFrame的创建从Spark2.0以上版本开始,Spark使用全新的SparkSession接口替代Spark1.6中的SQLContext及HiveContext接口来实现其对数据加载.转换 ...

  6. 原创:MVC 5 实例教程(MvcMovieStore 新概念版:mvc5.0,EF6.01) - 4、创建数据上下文和数据实体模型

    说明:MvcMovieStore项目已经发布上线,想了解最新版本功能请登录 MVC影视(MvcMovie.cn) 进行查阅.如需转载,请注明出处:http://www.cnblogs.com/Dodu ...

  7. 大数据学习day24-------spark07-----1. sortBy是Transformation算子,为什么会触发Action 2. SparkSQL 3. DataFrame的创建 4. DSL风格API语法 5 两种风格(SQL、DSL)计算workcount案例

    1. sortBy是Transformation算子,为什么会触发Action sortBy需要对数据进行全局排序,其需要用到RangePartitioner,而在创建RangePartitioner ...

  8. CSS.01 -- 选择器及相关的属性文本、文字、字体、颜色、

    与html相比,Css支持更丰富的文档外观,Css可以为任何元素的文本和背景设置颜色:允许在任何元素外围设置边框:允许改变文本的大小,装饰(如下划线),间隔,甚至可以确定是否显示文本. 什么是CSS? ...

  9. python中创建实例属性

    虽然可以通过Person类创建出xiaoming.xiaohong等实例,但是这些实例看上除了地址不同外,没有什么其他不同.在现实世界中,区分xiaoming.xiaohong要依靠他们各自的名字.性 ...

  10. spark DataFrame的创建几种方式和存储

    一. 从Spark2.0以上版本开始,Spark使用全新的SparkSession接口替代Spark1.6中的SQLContext及HiveContext接口来实现其对数据加载.转换.处理等功能.Sp ...

随机推荐

  1. 【Java】单号创建服务

    需求:ERP项目存在若干个业务功能,每个业务的单子的单号创建规则需要被统一规划 1.每个业务有自己对应的标识 2.业务单号必须以英文字母为前缀,长度在2 - 4个字符 3.单号的组成 = [ 前缀 ] ...

  2. 【转载】英特尔CEO:如果美出口管制太严,中国就必须生产自己的芯片

    原文地址: https://mbd.baidu.com/newspage/data/landingsuper?context={"nid"%3A"news_9816136 ...

  3. 神州笔记本(HASEE) win11 操作系统自动进入休眠状态,唤醒后自动关机 —— 神州笔记本总出现这种自动关机的问题怎么破解?

    前几日在某东上购入神州笔记本(HASEE),用着本来还好,但是最近只要用到电源模式的问题,这个笔记本就是会无端进入到自动关机的状态. 前文中也讨论过类似的问题: 神州笔记本 win11 节能模式 供电 ...

  4. 【转载】 解决VSCode运行或调试python文件无反应的问题

    ---------------- 版权声明:本文为CSDN博主「姜行者」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn. ...

  5. 如何在Ubuntu系统中进行系统级的代理设置

    在Ubuntu系统中我们往往需要设置代理上网,比如在Ubuntu22.04中,通过图形化界面的设置方式如下: 这里假设代理服务器地址为: 192.168.1.103:1080 ============ ...

  6. DRF中serializer的中的模型字段解释

    序列化器--Serializer 选项参数: max_length 最大长度 min_length 最小长度 allow_blank 是否允许为空 trim_whitespace 是否截断空白字符 m ...

  7. games101 作业6 详解SAH

    games101 作业6 详解SAH 可参考资料:https://www.pbr-book.org/3ed-2018/Primitives_and_Intersection_Acceleration/ ...

  8. QTreeWidget绑定QTabWidget

    QTreeWidget绑定QTabWidget 本文仅供本人知识总结使用,所以内容会比较浅显,不喜勿喷. 文章目录 QTreeWidget绑定QTabWidget 一.通过treeWidget路径配合 ...

  9. Ubuntu 添加虚拟内存文件

    添加交换文件 准备工作 查看当前系统中启用的交换空间(swap space)的详细信息: sudo swapon --show 查看系统的内存和总交换空间的使用情况: free -h 为了有足够的空间 ...

  10. .Net 5.0 WebAPI 发布至 CentOS 7 系统

    〇.前言 本文主要介绍了在 CentOS 7 上部署 WebAPI 项目的过程. 先安装 .net 5.0 的环境,再创建一个示例项目并发布至 CentOS 上,同时列明了一些注意的点:最后将 dot ...