Series对象是一种显示定义的索引与数值关联 显示定义的索引让Series对象有了更加强大的能力。...3 0.75 7 1.00 dtype: float64 Series是特殊的字典 字典是将任意键映射到一组任意值的结构,而Series对象是将类型化键映射到一组类型化值的结构。...对象 pd.Series(data, index=index) 其中index是一个可选参数,data参数支持多种数据类型 data可以是列表或者是Numpy数组,这时index默认值为整数数列: pd.Series...states.columns Index(['population', 'area'], dtype='object') 因此,DataFrame 可以看作一种通用的NumPy 二维数组,它的行与列都可以通过索引获取...Pandas 的 Index 对象是一个很有趣的数据结构,可以将它看作是一个不可变数组或有序集合 # 使用一个简单的列表创建Index对象 ind = pd.Index([2, 3, 5, 7, 11]
因此,itertuples() 保留值的数据类型,并且通常比iterrows() 快得多。 注意 如果列名是无效的 Python 标识符、重复的或以下划线开头,则列名将重命名为位置名称。...因此,itertuples() 保留了值的数据类型,并且通常比 iterrows() 更快。 注意 如果列名无效的 Python 标识符、重复或以下划线开头,则列名将重命名为位置名称。...()方法会复制基础数据(尽管不会复制轴索引,因为它们是不可变的),并返回一个新对象。...loc()尝试适应我们分配给当前 dtype 的内容,而[]将覆盖它们,从右侧获取 dtype。因此,以下代码片段会产生意外结果。...loc() 尝试适应我们正在分配的当前数据类型,而[]将覆盖它们,从右侧获取数据类型。因此,以下代码片段会产生意外结果。
pandas已经为我们自动检测了数据类型,其中包括83列数值型数据和78列对象型数据。对象型数据列用于字符串或包含混合数据类型的列。...对于包含数值型数据(比如整型和浮点型)的数据块,pandas会合并这些列,并把它们存储为一个Numpy数组(ndarray)。Numpy数组是在C数组的基础上创建的,其值在内存中是连续存储的。...pandas中的许多数据类型具有多个子类型,它们可以使用较少的字节去表示不同数据,比如,float型就有float16、float32和float64这些子类型。...这对我们原始dataframe的影响有限,这是由于它只包含很少的整型列。 同理,我们再对浮点型列进行相应处理: 我们可以看到所有的浮点型列都从float64转换为float32,内存用量减少50%。...首要问题是转变为类别类型会丧失数值计算能力,在将类别类型转换成真实的数值类型前,我们不能对category列做算术运算,也不能使用诸如Series.min()和Series.max()等方法。
在这里,f 标签未包含在 Series 中,因此在结果中显示为NaN。...Series,它不会在行之间保留数据类型(对于数据框的列,数据类型是保留的)。...因此,itertuples() 保留值的数据类型,并且通常比iterrows()更快。 注意 如果列名无效的 Python 标识符、重复或以下划线开头,则列名将重命名为位置名称。...()方法会复制底层数据(尽管不会复制轴索引,因为它们是不可变的)并返回一个新对象。...loc()尝试适应我们分配给当前数据类型的内容,而[]将覆盖它们,从右侧获取数据类型。因此,以下代码片段会产生意外结果。
直接对 age 这一列调用 max方法即可。...可以看到,对一个 Series 调用 这几个方法之后,返回的都只是一个聚合结果。...来介绍个有意思的方法:cumsum,看名字就发现它和 sum 方法有关系,事实上确实如此,cumsum 也是用来求和的,不过它是用来累加求和的,也就是说它得到的结果与原始的 Series 或 DataFrame...DataFrame 来说,apply 方法的作用对象是一行或一列数据(一个Series) user_info.apply(lambda x: x.max(), axis=0) -------------...,它对 DataFrame 的效果类似于 apply 对 Series 的效果。
pandas使用最多的数据结构对象是 DataFrame,它是一个面向列(column-oriented)的二维表结构,另一个是 Series,一个一维的标签化数组对象。...虽然它们并不能解决所有问题,但它们为大多数应用提供了一种可靠的、易于使用的基础。...Series数据结构 Series 是一种类似于一维数组的对象,它由一组数据(各种 NumPy 数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据即可产生最简单的 Series。...= pd.Series(np.arange(4),index=['a','b','c','d']) index = obj.index #index index[:-1] 注意:Index 对象是不可变的...,因此用户不能对其进行修改。
series 数据的可变性和复制 所有 pandas 数据结构都是值可变的(它们包含的值可以被改变),但不总是大小可变的。...series 可变性和数据的复制 所有的 pandas 数据结构都是值可变的(它们包含的值可以被改变),但并非总是大小可变的。...此DataFrame中的数据类型为整数(int64)、浮点数(float64)和字符串(object)。 注意 请求dtypes时,不使用括号!dtypes是DataFrame和Series的属性。...每个DataFrame中的列都是一个Series。当选择单个列时,返回的对象是一个 pandas Series。...DataFrame中的每一列都是一个Series。当选择单列时,返回的对象是一个 pandas Series。
),numpy.array会尝试推断创建的数组的良好数据类型。...因此,在 NumPy 中,此类型称为float64。请参见表 4.2 以获取 NumPy 支持的数据类型的完整列表。 注意 不要担心记住 NumPy 数据类型,特别是如果您是新用户。...因此,对 Series 的任何原地修改都将反映在 DataFrame 中。可以使用 Series 的copy方法显式复制列。...2.4 2.9 警告: 请注意,如果列的数据类型不全都相同,则转置会丢弃列数据类型,因此转置然后再次转置可能会丢失先前的类型信息。...', 'b', 'c'], dtype='object') In [87]: index[1:] Out[87]: Index(['b', 'c'], dtype='object') Index 对象是不可变的
直接对 age 这一列调用 max方法即可。 user_info.age.max() 40 类似的,通过调用 min、mean、quantile、sum 方法可以实现最小值、平均值、中位数以及求和。...可以看到,对一个 Series 调用 这几个方法之后,返回的都只是一个聚合结果。...来介绍个有意思的方法:cumsum,看名字就发现它和 sum 方法有关系,事实上确实如此,cumsum 也是用来求和的,不过它是用来累加求和的,也就是说它得到的结果与原始的 Series 或 DataFrame...DataFrame 来说,apply 方法的作用对象是一行或一列数据(一个Series) user_info.apply(lambda x: x.max(), axis=0) age...DataFrame 的效果类似于 apply 对 Series 的效果。
NumPy包的另一个重要功能是通用函数。它们在一般情况下对ndarray对象以及基本 Python 数据类型进行操作。...ndarray对象是不可变的,其形状是固定的。 它仅允许单一数据类型(numpy.dtype)用于整个数组。 相反,array类只共享允许唯一数据类型(类型代码,dtype)的特性。...对 C-ordered ndarray 对象的求和在行和列上都更快(绝对速度优势)。 使用 C-ordered(行优先)ndarray 对象,对行求和相对比对列求和更快。...使用 F-ordered(列优先)ndarray 对象,对列求和相对比对行求和更快。 结论 NumPy 是 Python 中数值计算的首选包。...② 检查x列中的值是否为正且y列中的值是否为负。 ③ 检查x列中的值是否为正或y列中的值是否为负。 使用结果布尔Series对象,复杂数据(行)的选择很简单。
虽然它们并不能解决所有问题,但它们为大多数应用提供了一种可靠的、易于使用的基础。...因此,对返回的Series所做的任何就地修改全都会反映到源DataFrame上。通过Series的copy方法即可指定复制列。...[ 2.4, 1.7], [ 2.9, 3.6]]) 如果DataFrame各列的数据类型不同,则值数组的dtype就会选用能兼容所有列的数据类型: In [75]: frame2.values...a', 'b', 'c'], dtype='object') In [79]: index[1:] Out[79]: Index(['b', 'c'], dtype='object') Index对象是不可变的...,因此用户不能对其进行修改: index[1] = 'd' # TypeError 不可变可以使Index对象在多个数据结构之间安全共享: In [80]: labels = pd.Index(np.arange
df.groupby("客户分类").sum() #只会对数据类型为数值(int,float)的列才会进行运算 温故知新,回忆一下有哪些汇总运算: count 非空值计数、sum 求和、mean...df.groupby(["客户分类","区域"]).sum() #只会对数据类型为数值(int,float)的列才会进行运算 无论分组键是一列还是多列,只要直接在分组后的数据进行汇总运算,就是对所有可以计算的列进行计算...其实这和列选择一样,传入多个Series时,是列表中的列表;传入一个Series直接写就可以。...) #对分组后数据进行求和运算 df.groupby(df["客户分类"]).sum() #只会对数据类型为数值(int,float)的列才会进行运算 (2)按照多个Series进行分组 #以 客户分类...) #对分组后数据进行求和运算 df.groupby([df["客户分类"],df["区域"]]).sum() #只会对数据类型为数值(int,float)的列才会进行运算 #有时不需要所有的列进行计算
Pandas提供了以下几种基本的数据类型: Series DataFrame Index Pandas Series对象 Pandas Series 是一个一维的数组对象,它可以从列表或者数组中创建。...的值可以通过索引来获取: data[1] #0.5 还支持切片: data[1:3] 结果为: 1 0.50 2 0.75 dtype: float64 从上可以看出,同Numpy相比...', 'population'], dtype='object') 2.特殊的字典 类似的,可以将DataFrame看做字典,key为列索引值,value为对应的Series对象。...ind = pd.Index([2, 3, 5, 7, 11]) 1.将Index看做不可变数组 ind[1] # 3 Index对象跟Numpy数组很像,主要区别就是Index对象是不可修改的。...2.将Index看作排序的集合 Pandas对象被设计用来处理多个数据集,因此依赖很多集合操作。由于Index可以看做集合,因此它支持交、并、差等集合操作。
Series会根据传入的list序列中元素的类型判断Series对象的数据类型,如果全部都是整型,则创建的Series对象是整型,如果有一个元素是浮点型,则创建的Series对象是浮点型,如果有一个是字符串...索引'a'和索引'b'都匹配得上,因此值为1和2。...我们可以认为DataFrame中的列其实就是上面提到的Series,有多少列就有多少个Series对象,它们共享同一个索引index。...并且返回的是Series对象。...DataFrame赋值,就是对列赋值,首先获取DataFrame对象中某列的Series对象,然后通过赋值的方式就可以修改列的值: data = {'fruit':['Apple','Apple','Orange
最原始的数据是 127 个独立的 CSV 文件,不过我们已经使用 csvkit 合并了这些文件,并且在第一行中为每一列添加了名字。...Pandas 中的许多类型包含了多个子类型,因此可以使用较少的字节数来表示每个值。例如,float 类型就包含 float16、float32、float64 等子类型。...下面的图标展示了数字值是如何存储在 NumPy 数据类型中,以及字符串如何使用 Python 内置的类型存储。 你可能已经注意到,我们的图表之前将对象类型描述成使用可变内存量。...你可以看到,每个唯一值都被分配了一个整数,并且该列的底层数据类型现在是 int8。该列没有任何缺失值,如果有的话,这个 category 子类型会将缺省值设置为 -1。...可能出现的最大问题是无法进行数值计算。我们不能在将其转换成真正的数字类型的前提下,对这些 category 列进行计算,或者使用类似 Series.min() 和 Series.max() 的方法。
文章目录 关于pandas pandas创始人对pandas的讲解 pandas的热度 pandas对于数据分析 pandas数据结构简介 Series DataFrame pandas数据结构方法详解...pandas创始人对pandas的讲解 在pandas的官网(Python Data Analysis Library)上,我们可以看到有一段pandas创始人Wes McKinney对pandas的讲解...数据帧 2 一般的二维标签,大小可变的表格结构,具有潜在的非均匀类型列。 面板 3 一般3D标签,大小可变的数组。 ---- Series 系列是具有均匀数据的一维数组结构。...这只有在没有通过索引的情况下才是正确的。 dtype:每列的数据类型。 copy:如果默认值为False,则使用该命令(或其它)复制数据。...dtype 返回对象的dtype。 empty 如果series为空,则返回True。 ndim 根据定义1返回基础数据的维度数。 size 返回基础数据中元素的数量。
pandas 会自动为我们检测数据类型,发现其中有 83 列数据是数值,78 列是 object。object 是指有字符串或包含混合数据类型的情况。...这种存储方案使得对值的访问速度非常快。 因为每种数据类型都是分开存储的,所以我们将检查不同数据类型的内存使用情况。首先,我们先来看看各个数据类型的平均内存用量。...首先我们看看能否改进数值列的内存用量。 理解子类型(subtype) 正如我们前面简单提到的那样,pandas 内部将数值表示为 NumPy ndarrays,并将它们存储在内存的连续块中。...(pd.Series.value_counts) 100.99 MB 50.49 MB 我们可以看到浮点型列的数据类型从 float64 变成了 float32,让内存用量降低了 50%。...如果没有首先将其转换成数值 dtype,那么我们就无法对 category 列进行算术运算,也就是说无法使用 Series.min() 和 Series.max() 等方法。
当你将对象作为参数传递给函数时,新的局域变量创建了对原始对象的引用,而不是复制。如果在函数里绑定一个新对象到一个变量,这个变动不会反映到上一层。因此可以改变可变参数的内容。...由于NumPy关注的是数值计算,因此,如果没有特别指定,数据类型基本都是float64(浮点数)。...因此,该类型在NumPy中就记作float64。表4-2列出了NumPy所支持的全部数据类型。 笔记:记不住这些NumPy的dtype也没关系,新手更是如此。...虽然它们并不能解决所有问题,但它们为大多数应用提供了一种可靠的、易于使用的基础。...因此,对返回的Series所做的任何就地修改全都会反映到源DataFrame上。通过Series的copy方法即可指定复制列。
若未指定数据类型,pandas会根据传入的数据自动推断数据类型。 在使用pandas中的Series数据结构时,可通过pandas点Series调用。...()重命名一个数组的名称,并且新指向一个数组,原数组不变 输出为: hehehe test 1.3.4 Series索引 包括:位置下标 / 标签索引 / 切片索引 / 布尔型索引 位置索引 #...:',type(frame.values)) # 查看数据,数据类型为dataframe # .index查看行标签 # .columns查看列标签 # .values查看值,数据类型为ndarray...# index在这里和之前不同,并不能改变原有index,如果指向新的标签,值为NaN (非常重要!)...类对象还是创建DataFrame类对象,根本目的在于对Series类对象或DataFrame类对象中的数据进行处理,但在处理数据之前,需要先访问Series类对象或DataFrame类对象中的数据。
这是对提高性能的补充,后者侧重于加快适���内存的数据集的分析。 加载更少的数据 假设我们在磁盘上的原始数据集有许多列。...8409608 id 8409608 name 1051495 x 8409608 y 8409608 dtype: int64 我们可以进一步将数值列降级为它们的最小类型...8409608 id 8409608 name 1051495 x 8409608 y 8409608 dtype: int64 我们可以进一步将数值列降级为它们的最小类型...可以通过调用 memory_usage() 方法找到每列的内存使用情况。这会返回一个 Series,其索引由列名表示,并显示每列的内存使用情况(以字节为单位)。...通过调用 memory_usage() 方法可以找到每列的内存使用情况。这将返回一个由列名表示的索引的 Series,其中显示了每列的内存使用情况(以字节为单位)。
领取专属 10元无门槛券
手把手带您无忧上云