首页 > 其他分享 >【01】DataFrame的创建和属性

【01】DataFrame的创建和属性

时间:2024-10-10 17:35:56浏览次数:5  
标签:01 df DataFrame pd print import columns 属性

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,df,DataFrame,pd,print,import,columns,属性
From: https://www.cnblogs.com/crazywh/p/18455980

相关文章

  • 501 距离和
    //501距离和.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。///*http://oj.daimayuan.top/course/5/problem/224有一棵n个节点的树,节点编号从1到n。请求出每个节点到其他所有节点的距离的和。定义两个节点的距离为它们之间的简单路径上经过了多少条......
  • [JOI 2013 Final]彩灯
    [JOI2013Final]彩灯题意给出一个\(01\)序列,可以把一段区间反转。求反转后序列最长的交替子段,即\(010101\ldots\)或\(101010\ldots\)。思路首先发现一个性质,反转的一定是一段交替子段。因为反转不交替子段对答案的贡献不优。枚举反转哪一段交替子段,统计左右两边的......
  • [JOI 2013 Final]JOIOI 塔
    [JOI2013Final]JOIOI塔题意给出一个由\(\text{JOI}\)组成的字符串,可从中取出一些子序列。求最多取出多少\(\text{IOI}\)和\(\text{JOI}\)。思路若答案\(x\)可行,则所有\(y<x\)均可行,若答案\(x\)不可行,则所有\(y>x\)均不可行。这样就可以可行性二分。考虑如......
  • [JOI 2013 Final]现代豪宅
    [JOI2013Final]现代豪宅题意给出一个\(n\timesm\)的网格图,每两个格子之间有一扇门。初始上下方向的门都是开着的,左右方向的门是关着的。有一些格子有按钮,可以把打开的门关上,关上的门打开。走一步需要一秒,按按钮需要一秒,求从\((1,1)\)到达\((n,m)\)的最小步数。思路......
  • [JOI 2013 Final]搭乘 IOI 火车
    [JOI2013Final]搭乘IOI火车题意给出两个由\(\text{OI}\)组成的字符串\(S,T\)。可以删除每个字符串的前缀和后缀。每次从剩下部分的第一位取出一个字符放到新的字符串中。要求新字符串必须以\(\text{I}\)开头结尾,相同的字符不能相邻,求新字符串的最大长度。思路定义......
  • 01 torch基础
    学习参考:https://deeplizard.com/预备知识GPU是实现并行计算的硬件,CUDA是一个为开发人员提供api的软件层。PyTorch里面内置CUDA,无需额外下载,所需要的是GPU处理简单任务用CPU更合适,因为移入GPU成本很高CUDA与PyTorch的结合使用PyTorch利用CUDA,即在GPU上执行计算,只需要将张......
  • E62 树形DP P8677 [蓝桥杯 2018 国 A] 采油
    视频链接:  P8677[蓝桥杯2018国A]采油-洛谷|计算机科学教育新生态(luogu.com.cn)//树形DP+贪心O(nlogn)#include<bits/stdc++.h>#defineN100010usingnamespacestd;vector<int>e[N];intn,B[N],S[N],f[N],len;structman{intb,s;};boolcmp(manx,......
  • CMake 属性之目录属性
    【写在前面】CMake的目录属性是指在特定目录(及其子目录)范围内有效的设置。这些属性不同于全局变量或目标(Target)属性,它们提供了一种机制,允许开发者为项目中的不同部分定义不同的构建行为。通过目录属性,你可以指定编译器选项、包含路径、预处理定义等,而无需在每个目标或文件中重......
  • 【日记】生巧好好吃!(701 字)
    正文今天才发现昨天寒露。不过昨天很冷,今天倒挺暖和,太阳很好。下午上班,觉得这么好的太阳不做点什么很亏,于是转身回去拿了被子。晚上下班去收,被子上面落的全是桂花。那时候天色已暗,天边有一种低沉但通透的蓝。一般这种时候温度都很低了。秋天真的到了啊……主管买的......
  • 001、下载并运行
    1、下载github,并放到自己的项目工程中2、确保直接电脑按照了node.js,输入cmd命令行看node,可以看到node版本是v20 3、在工程目录用命令行输入npmupdate 4、在命令行继续输入npmrundev5、可以正常登录了。 6、界面内容如下: ......