300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 【数据分析】认识Pandas:DataFrame和Series结构 属性

【数据分析】认识Pandas:DataFrame和Series结构 属性

时间:2019-06-04 07:19:31

相关推荐

【数据分析】认识Pandas:DataFrame和Series结构 属性

数据分析工具——Pandas

认识PandasDataframe 结构DataFrame 构造方法dtype参数Series 结构Series 构造方法DataFrame和Series属性

认识Pandas

Pandas 是 Python 语言的一个扩展程序库,用于数据挖掘数据分析,同时也提供数据清洗功能。

pandas(panel data & data analysis),是基于 numpy(提供高性能的矩阵运算)专门用于数据分析的工具,是一个强大的分析结构化数据(表格数据)的工具集;

Pandas所有的操作都基于两种结构:DataFrame结构 和Series结构

Dataframe 结构

DataFrame 是 Pandas 中的一个表格型的数据结构,是一个二维的数组结构,类似二维数组。包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等)。

表格有三部分组成,表头(列索引)、行名称(行索引)、数据元素部分。

DataFrame 构造方法

pandas.DataFrame( data, index, columns, dtype, copy)

data:数据(array-like 类型:可以是ndarray、series, map, lists, dict 等类型)。index:行索引,如果不指定行索引—默认给一个0、1、2、3、… 这样的序号行索引。columns:列索引 ,如果不指定列索引—默认给一个0、1、2、3、… 这样的序号列索引。dtype:数据类型。copy:拷贝数据,默认为 False。

方式 1:使用列表 逐个传入行索引、列索引和 数据元素df = pd.DataFrame(# 使用 列表嵌套 构造数据data=[['zs', 19, 1],['ls', 20, 1],['ww', 19, 2]],index=['stu0', 'stu1', 'stu2'], # 行索引columns=['name', 'age', 'group'] # 列索引# 如果不指定行索引---默认给一个0、1、2、3、... 这样的序号行索引# 如果不指定列索引---默认给一个0、1、2、3、... 这样的序号列索引)print('df:\n', df)print('df_type:\n', type(df))"""df:name age groupstu0 zs 191stu1 ls 201stu2 ww 192df_type:<class 'pandas.core.frame.DataFrame'>"""方式 2:借助字典df = pd.DataFrame(# 字典的键 (Key) 对应 列索引# 字典的值(Value)对应 数据元素data={'name': ['zs', 'ls', 'ww'],'age': [18, 19, 29],'group': [1, 1, 2]},index=['stu0', 'stu1', 'stu2'], # 行索引)print('df:\n', df)print('df_type:\n', type(df))"""df:name age groupstu0 zs 181 stu1 ls 191 stu2 ww 292 df:<class 'pandas.core.frame.DataFrame'>"""方式 3:由 ndarray 转化为 dataframe结构import numpyvalues = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])print('values:\n', values)print('values_type:', type(values))"""values:[[1 2 3 4][5 6 7 8]]values_type:<class 'numpy.ndarray'>"""df = pd.DataFrame(data=values, # 数据columns=['一','二','三','四'], # 列索引)print('df:\n', df)print('df_type:\n', type(df))"""df:一 二 三 四0 1 2 3 41 5 6 7 8df_type:<class 'pandas.core.frame.DataFrame'>"""

注:关于参数元素缺失

df = pd.DataFrame(data=[['zs', 19, 1],['ls', 20, 1],['ww', 19]# data数据元素缺失会自动用NaN补齐],index=['stu0', 'stu1', 'stu2'],# index与data行数量不对应会报错columns=['name', 'age', 'group']# columns与data列数量不对应会报错)print('df:\n', df)"""df:name age groupstu0 zs 19 1.0stu1 ls 20 1.0stu2 ww 19 NaN"""

dtype参数

data=[['zs', 19, 1],['ls', 20, 1],['ww', 19, 2]],df = pd.DataFrame(data=datacolumns=['name', 'age', 'group'],)print('dtypes:\n', df.dtypes)'''dtypes:nameobjectage int64groupint64dtype: object'''df = pd.DataFrame(data=datacolumns=['name', 'age', 'group'],dtype="int32")print('dtypes:\n', df.dtypes)'''df:nameobjectage int32groupint32dtype: object'''df = pd.DataFrame(data=datacolumns=['name', 'age', 'group'],dtype=numpy.)print('dtypes:\n', df.dtypes)'''df:nameobjectage int32groupint32dtype: object'''

Series 结构

Series 类似表格中的一个列(column),类似于一维数组,可以保存任何数据类型。Series 由索引(index)和组成

DataFrame结构就是 由多个Series结构组成的:

df = pd.DataFrame(data=[['zs', 19, 1],['ls', 20, 1],['ww', 19, 2]],index=['stu0', 'stu1', 'stu2'],columns=['name', 'age', 'group'],)print('name:\n', df["name"])print("*"*20)print('name_type:\n', type(df["name"]))'''name:stu0 zsstu1 lsstu2 wwName: name, dtype: object********************name_type:<class 'pandas.core.series.Series'>'''

Series 构造方法

pandas.Series( data, index, dtype, name, copy)

Serise的参数与Dataframe的参数相似:

data:一组数据(array-like 类型)。index:数据索引标签,不指定默认从 0 开始。可指定array-like 类型需和data长度相同。dtype:数据类型,默认会自己判断。name:设置名称(str 类型),相当于Dataframe结构指定多列名称的Columns 变为单列的name。copy:拷贝数据,默认为 False。

df= pd.Series([1, 2, 3])print("df:\n", df)'''df:0 11 22 3dtype: int64'''se = pd.Series(data={'zs': 17, 'ls': '18', 'ww': 18},# 可以用字典指定索引和值index=['zs', 'ls', 'ww', 'jj'], # 指定key为行索引,如果没有对应的value值,那么会用NaN补齐# 如果index和data字典的键不同,则使用index指定的索引)print('se:\n',se)print('se_type:\n',type(se))'''se:zs17ls18ww18jj NaNdtype: objectse_type:<class 'pandas.core.series.Series'>'''

DataFrame和Series属性

import pandas as pd# 创建DataFrame结构df = pd.DataFrame(data=[['zs', 19, 1],['ls', 20, 1],['ww', 19, 2]],index=['stu0', 'stu1', 'stu2'],columns=['name', 'age', 'group'])print('df:\n', df)print('df_type:\n', type(df)) # <class 'pandas.core.frame.DataFrame'>print('ndim:', df.ndim)# DataFrame结构(int):2 --->二维的结构print('shape:', df.shape) # DataFrame的行列数(tuple): (3,3)print('size:', df.size)# DataFrame的数据数量<class 'numpy.int32'>:9# print('dtype:', df.dtype) # 'DataFrame' object has no attribute 'dtype'print('dtypes:\n', df.dtypes) # 返回每一列的数据类型-(组成了一个Series)----不同的列数据类型可以不同! ---注意:DataFrame可以存储不同类型的数据print('index:', df.index)# 获取的是DataFrame的行索引print('columns:', df.columns) # 获取的是Dataframe的列索引print('values:\n', df.values) # 数据print('values_type:\n', type(df.values)) # <class 'numpy.ndarray'>print("-"*80)# 获取 Series -----Series结构---一维的数据 ------>行维度se = df['name']print('se:\n', se)print('se:\n', type(se)) # <class 'pandas.core.series.Series'>print('ndim:', se.ndim)# 1print('shape:', se.shape) # (3,)print('size:', se.size)# 3print('name:', se.name)# name# print('itemsize:', se.itemsize) # 每个数据所占的字节,当前版本可能还有,但是未来要被删除!print('dtype:', se.dtype) # objectprint('dtypes:', se.dtypes) # object, Series各个列内部的数据类型都是一样的,所以具有dtypeprint('index:',se.index) # 行索引print('values:',se.values) # 数据

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。