首页 > 其他分享 >Pandas 03 DataFrame

Pandas 03 DataFrame

时间:2023-05-22 11:07:18浏览次数:35  
标签:03 index df dtype DataFrame pd data Pandas


Pandas DataFrame

Init signature:
pd.DataFrame(
    data=None,
    index: 'Optional[Axes]' = None,
    columns: 'Optional[Axes]' = None,
    dtype: 'Optional[Dtype]' = None,
    copy: 'bool' = False,
)
Docstring:     
Two-dimensional, size-mutable, potentially heterogeneous tabular data.

Data structure also contains labeled axes (rows and columns).
Arithmetic operations align on both row and column labels. Can be
thought of as a dict-like container for Series objects. The primary
pandas data structure.

Parameters
----------
data : ndarray (structured or homogeneous), Iterable, dict, or DataFrame
    Dict can contain Series, arrays, constants, dataclass or list-like objects. If
    data is a dict, column order follows insertion-order.

    .. versionchanged:: 0.25.0
       If data is a list of dicts, column order follows insertion-order.

index : Index or array-like
    Index to use for resulting frame. Will default to RangeIndex if
    no indexing information part of input data and no index provided.
columns : Index or array-like
    Column labels to use for resulting frame. Will default to
    RangeIndex (0, 1, 2, ..., n) if no column labels are provided.
dtype : dtype, default None
    Data type to force. Only a single dtype is allowed. If None, infer.
copy : bool, default False
    Copy data from inputs. Only affects DataFrame / 2d ndarray input.

See Also
--------
DataFrame.from_records : Constructor from tuples, also record arrays.
DataFrame.from_dict : From dicts of Series, arrays, or dicts.
read_csv : Read a comma-separated values (csv) file into DataFrame.
read_table : Read general delimited file into DataFrame.
read_clipboard : Read text from clipboard into DataFrame.

Examples
--------
Constructing DataFrame from a dictionary.

>>> d = {'col1': [1, 2], 'col2': [3, 4]}
>>> df = pd.DataFrame(data=d)
>>> df
   col1  col2
0     1     3
1     2     4

Notice that the inferred dtype is int64.

>>> df.dtypes
col1    int64
col2    int64
dtype: object

To enforce a single dtype:

>>> df = pd.DataFrame(data=d, dtype=np.int8)
>>> df.dtypes
col1    int8
col2    int8
dtype: object

Constructing DataFrame from numpy ndarray:

>>> df2 = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]),
...                    columns=['a', 'b', 'c'])
>>> df2
   a  b  c
0  1  2  3
1  4  5  6
2  7  8  9

Constructing DataFrame from dataclass:

>>> from dataclasses import make_dataclass
>>> Point = make_dataclass("Point", [("x", int), ("y", int)])
>>> pd.DataFrame([Point(0, 0), Point(0, 3), Point(2, 3)])
    x  y
0  0  0
1  0  3
2  2  3
File:           d:\python38\lib\site-packages\pandas\core\frame.py
Type:           type
Subclasses:     SubclassedDataFrame

代码

功能

DataFrame()

创建一个DataFrame对象

df.values

返回ndarray类型的对象

df.iloc[ 行序,列序 ]

按序值返回元素

df.loc[ 行索引,列索引 ]

按索引返回元素

df.index

获取行索引

df.columns

获取列索引

df.axes

获取行及列索引

df.T

行与列对调

df. info()

打印DataFrame对象的信息

df.head(i)

显示前 i 行数据

df.tail(i)

显示后 i 行数据

df.describe()

查看数据按列的统计信息

1、创建

大多数情况下都是从数据文件如 CSV、Excel 中取得数据。

d = {'one': pd.Series([1., 2., 3.], index=['a', 'b', 'c']), 'two': pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
pd.DataFrame(d, index=['d', 'b', 'a'], columns=['two', 'three'])

d = np.zeros((2, ), dtype=[('A', 'i4'), ('B', 'f4'), ('C', 'a10')]) # 创建一个空的 2x3 数组
# 给这个数据填入具体数据值
d[:] = [(1, 2., 'Hello'), (2, 3., "World")]
pd.DataFrame(d, index=['first', 'second'], columns=['C', 'A', 'B'])
d = [{'a': 1, 'b': 2}, {'a': 5, 'b': 10, 'c': 20}]
pd.DataFrame(d)
# 从字典里生成
pd.DataFrame.from_dict(dict([('A', [1, 2, 3]), ('B', [4, 5, 6])]))
# 从列表、元组、ndarray 中创建
pd.DataFrame.from_records([(1, 2., b'Hello'), (2, 3., b'World')])
# 列内容为一个字典
pd.json_normalize(df.col)
df.col.apply(pd.Series)

2、访问索引和列名

d = {'one': [1., 2., 3., 4.], 'two': [4., 3., 2., 1.]}
df = pd.DataFrame(d, index=['a', 'b', 'c', 'd'])
df.index
# Index(['a', 'b', 'c', 'd'], dtype='object')

df.columns
# Index(['one', 'two'], dtype='object')

3、选择增加修改列

df['one'] # 选择列,结果是一个 Series
df['foo'] = 'bar' # 定义一个固定值的列
df['one_trunc'] = df['one'][:2] # 定义的新列取某列的部分值
df['three'] = df['one'] * df['two'] # 定义一个新列,由已有的两列相乘
df['flag'] = df['one'] > 2 # 新增加的列返回的是一个逻辑运算值
df.insert(1, 'bar', df['one']) # 在列索引位 1 处理插入名为 bar 的列,值取 df.one

Signature: df.insert(loc, column, value, allow_duplicates=False) -> 'None'
Docstring:
Insert column into DataFrame at specified location.

Raises a ValueError if `column` is already contained in the DataFrame,
unless `allow_duplicates` is set to True.

Parameters
----------
loc : int
    Insertion index. Must verify 0 <= loc <= len(columns).
column : str, number, or hashable object
    Label of the inserted column.
value : int, Series, or array-like
allow_duplicates : bool, optional
File:      d:\python38\lib\site-packages\pandas\core\frame.py
Type:      method

4、删除一个列

del df['two']
three = df.pop('three')

5、用方法链创建新列

方法链(method chains)是一种预计算,并没有改变原变量的数据,同时使用起来非常方便,不需要频繁给变量赋值。

# 定义一个名为 rate 的新列,并给定计算公式
df.assign(rate=df.one/df.bar)
# 可以用 lambda 进行计算,变量 x 是指整个 df 
df.assign(rate=lambda x:x['one']/x['two'])
# 可指定多个
df.assign(rate=lambda x:x['one']/x['bar'], rate2=lambda x:x['one']+x['bar'])

6、选择数据

Operation

Syntax

Result

选择列

df[col]

Series

按索引选择行

df.loc[label]

Series

按数字索引选择行

df.iloc[loc]

Series

使用切片选择行

df[5:10]

DataFrame

用表达式筛选行

df[bool_vec]

DataFrame

df['one']
df.loc['a']
df[1:3]
df.iloc[3]
df[df.one > 1]

7、数据的转置

可以会数据沿对角线进行转置,即行转列,列转行 df.T


标签:03,index,df,dtype,DataFrame,pd,data,Pandas
From: https://blog.51cto.com/u_1439909/6321599

相关文章

  • Pandas 03 使用
    Pandas的使用典型的数据分析流程是采集、整理清洗、处理(分组、排序、计算),然后按照分析目的产出最终数据,最后进行可视化,得出结论。一、Pandas读取和导出格式文件格式读取函数写入(输出)函数binaryExcelread_excelto_exceltextCSVread_csvread_tabletextJSONread_jsonto_jsontext网页......
  • Python 2-03 递推和递归
    递推和递归一、递推算法Recursionmethod递推算法是通过已知条件,利用特定关系得出中间推论,直至得到结果的算法。递推算法分为顺推和逆推两种。动态规划1、顺推法所谓顺推法是从已知条件出发,逐步推算出要解决的问题的方法叫顺推。#n!阶乘deffactorial(n):t=1fori......
  • Pandas 01 快速入门
    Pandas官方文档Pandas(/ˈpændəz/)是一个开源的、BSD许可的库,为Python编程语言提供高性能、易于使用的数据结构和数据分析工具。Pandas适合处理一个规正的二维数据,即有N行N列,类似于SQL执行后产出的,或者无合并单元格Excel表格。一、快速入门1、读取数据importpandasa......
  • 遇到的问题之"数据库编写SQL-》子查询中加入limit报错:This version of MySQL doesn't
    一、问题 >1235-ThisversionofMySQLdoesn'tyetsupport'LIMIT&IN/ALL/ANY/SOMEsubquery'二、原因/解决方案这个错误通常是由于MySQL版本太旧导致的。在旧版本的MySQL中,无法在子查询中使用LIMIT和IN/ALL/ANY/SOME子查询。您需要升级到MySQL的较新版本,以解决......
  • c语言程序设计知识点总结03
    c语言程序设计知识点总结03地址(Address):计算机的内存由若干个字节内存单元构成,每个字节内存单元都有一个唯一的地址用于区分和存取单元中的数据。形式上,地址是一个无符号整数,从0开始,依次递增,在表达和交流时,通常把地址写成十六进制数。指针(Pointer):一个变量,它存有另外一......
  • 03、Etcd 客户端常用命令
    上一讲我们安装etcd服务端,这一讲我们来一起学学如何使用etcd客户端常见的命令。文章内容来源于参考资料,如若侵权,请联系删除,谢谢。etcd可通过客户端命令行工具etcdctl对etcd进行请求操作#帮助命令,会列出所有的命令和选项,在记不太清命令的时候,可以使用etcdctl‐h#......
  • DataFrameGroupBy.agg详解
    DataFrameGroupBy.agg(arg, *args, **kwargs)[source]Aggregateusingcallable,string,dict,orlistofstring/callablesParameters:funcFunctiontouseforaggregatingthedata.Ifafunction,musteitherworkwhenpassedaDataFrameorwhenpassedto......
  • 【CSP 202303-4】星际网络Ⅱ 【离散化+线段树】
    题目链接http://118.190.20.162/view.page?gpid=T162题意一个网络地址由\(n\)(\(n\leq512\),且是16的倍数)位二进制位组成(形如xxxx:xxxx:....:xxxx),有若干用户需要申请一些网络地址。有三种操作:申请。给出一个用户编号,和要查询的地址区间[L,R],若全都没有被申请过,或者......
  • HDU-1003- Max Sum (动态规划)
    MaxSumTimeLimit:2000/1000MS(Java/Others)    MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):192050    AcceptedSubmission(s):44727ProblemDescriptionGivenasequencea[1],a[2],a[3]......a[n],yourjobistocalculatethe......
  • 【linux基础-03】Linux命令速查手册
    查看Linux系统信息arch#显示机器的处理器架构(1)uname-m#显示机器的处理器架构(2)uname-r#显示正在使用的内核版本dmidecode-q#显示硬件系统部件-(SMBIOS/DMI)hdparm-i/dev/hda#罗列一个磁盘的架构特性hdparm-tT/dev/sda#在磁盘上执......