"""pandas数据结构 DataFrame的基本应用练习示例"""import pandas as pdimport numpy'''DataFrame是一个表格行的数据结构,即有行标签(index),又有列标签(columns),它也被称为异构数据表所谓异构,指的是表格中每列的数据类型可以不同。比如:可以是字符串,整形或浮点型等。DataFrame 的每一行数据都可以看成一个Series结构,只不过,DataFrame为这些行中每个数据值增加了一个列标签。DataFrame其实是从Series的基础商演变而来的。DataFrame结构类似于Excel的表格类型DataFrame数据结构的特点:DataFrame每一列的标签值允许使用不同的数据类型;DataFrame是表格行的数据结构,具有行和列DataFrame中的每个数据值都可以被修改DataFrame结构的行数。列数允许增加或者删除。DataFrame有两个方向的标签轴,分别是行标签和列标签DataFrame可以对行和列执行算数运算'''# *******************************************# 创建DataFrame对象  语法参数说明:# DataFrame(data,index,columns,dtype,copy)# data: 数据,输入的数据可以是ndarry ,series list dict 标量 DataFrame# index: 行标签,如果没有传递index值,则默认行标签是np.arange(n),n代表data的元素个数# dtype: 数据类型# copy: 默认为false 表示复制数据data# 创建一个空的DataFrame对象,df = pd.DataFrame()print(df)# 使用单一列表创建DataFrame# *************************************************data = [1,2,3,4,5]df = pd.DataFrame(data=data)print("使用单一列表创建DataFrame")print(df)# 使用嵌套列表创建DataFrame# *********************data=[['张飞', '右将军'],      ['赵云', '镇军将军'],      ['关羽', '前将军'],      ['黄忠', '后将军'],      ['马超', '左将军']]df = pd.DataFrame(data=data,columns=['姓名', '职称'])print("使用嵌套列表创建DataFrame:")print(df)# *************************************************# 字典嵌套列表创建DataFrame,使用dice字典是{}大括号data ={'姓名':['张飞','赵云', '关羽', '黄忠', '马超'],       '职称':['右将军','镇军将军', '前将军', '后将军', '左将军']}df = pd.DataFrame(data=data)print("使用字典嵌套列表创建DataFrame:")print(df)# *************************************************# 使用列表嵌套字典创建DataFrame。# 对于字典元素缺失的,就是字典的Key无法找到对应的value值,将使用NaN代替data = [{"姓名":"张飞","职称":"右将军", "封号":"新亭侯"},        {"姓名":"赵云","职称":"镇军将军"},        {"姓名":"关羽","职称":"前将军","封号":"汉寿亭侯"},        {"姓名":"黄忠","职称":"后将军", "封号":"关内侯"},        {"姓名":"马超","职称":"左将军"},]df = pd.DataFrame(data=data)print("使用列表嵌套字典创建DataFrame,缺失值使用NaN代替:")print(df)# *************************************************# Series创建DataFrame 字典嵌套Seriesdata={"one":pd.Series(['z','x','c']),      "two":pd.Series(['a','s','d'])}df = pd.DataFrame(data=data)print("字典嵌套Series创建DataFrame:")print(df)print("使用列索引访问数据:")print(df['two'].values)print("访问前两行数据:")print(df.head(2))# 使用loc按照行名,列名 访问数据print("访问第一行,列名为:two的数据")print(df.loc[1,"two"])# iloc 只接受整数索引,print("访问第一行数据")print(df.iloc[1])# 使用columns列索引表标签可以实现添加新的数据列data["three"] = pd.Series(['q', 'w', 'e']) # 添加新的列df = pd.DataFrame(data=data)  # 重新创建DataFreameprint("插入新列:")print(df)# 使用del 删除DataFrame 部分数据del df["two"]print("使用del删除DataFrame 部分数据")print(df)# 使用pop方法删除DataFrame中的数据df.pop("one")print("使用pop方法删除DataFrame中的数据:")print(df)# *************************************************data={"one":pd.Series(['z','x','c']),      "two":pd.Series(['a','s','d'])}df = pd.DataFrame(data=data)# drop方法 删除指定行数据d = df.drop(index=1)print("drop方法 指定删除第一行数据:")print(d)# ****************************************************# 在末尾出添加行 appenddf1 = pd.DataFrame(data={"one":pd.Series(['z','x','c']),      "two":pd.Series(['a','s','d'])})df2 = pd.DataFrame(data={"one":pd.Series(['1','2','3']),      "two":pd.Series(['4','5','6'])})# append方法 ignore_index参数 为True时,重新排列行索引df1 = df1.append(df2,ignore_index=True)print("append在末尾添加新数据:")print(df1)# ****************************************************'''常用属性和方法:与Series相差无几T 行和列转置axes  返回一个以行轴和列轴标签为成员的列表dtypes 返回没每列数据的数据类型empty  DataFrame中没有数据或者任意坐标轴的长度为0,则返回Truendim 轴的数量,也指数组的维数shape 返回一个元组。表示了DataFrame维度size  DataFrame中的元素数量values 以numpy数组表示DataFrame中的元素值head() 返回前n行数据tail() 返回后n行数据shift() 将行或列一定指定的步幅长度'''data = [{"姓名":"张飞","职称":"右将军", "封号":"新亭侯", "年龄": 25},        {"姓名":"赵云","职称":"镇军将军", "年龄": 22},        {"姓名":"关羽","职称":"前将军","封号":"汉寿亭侯", "年龄": 28},        {"姓名":"黄忠","职称":"后将军", "封号":"关内侯", "年龄": 45},        {"姓名":"马超","职称":"左将军" , "年龄": 30} ]df = pd.DataFrame(data=data)# T 行列转换print("行列转换:")print(df.T)print("输出行标签,列标签:")print(df.axes)print("每一列的数据类型:")print(df.dtypes)print("是否为空值,是空值时返回True,否则返回False:")print(df.empty)print("DataFrame对象的维数:")print(df.ndim)print("DataFrame维度的元组:返回值元组,第一个为行,第二个为列")print(df.shape)print("DataFrame元素数量:")print(df.size)print("以ndarry数组的形式返回DataFrame中的数据:")print(df.values)# 移动DataFrame中的数据# 参数periods移动的幅度,int数据# 参数axis 控制移动行或者移动列 'index'上下移动,'columns'左右移动# 参数fill_value 用于填充移动后缺失的数据df = df.shift(periods=1, axis='index', fill_value="无")print("向下移动一行DataFrame中的数据,数据用无填充:")print(df)代码运行结果:Empty DataFrameColumns: []Index: []使用单一列表创建DataFrame   00  11  22  33  44  5使用嵌套列表创建DataFrame:   姓名    职称0  张飞   右将军1  赵云  镇军将军2  关羽   前将军3  黄忠   后将军4  马超   左将军使用字典嵌套列表创建DataFrame:   姓名    职称0  张飞   右将军1  赵云  镇军将军2  关羽   前将军3  黄忠   后将军4  马超   左将军使用列表嵌套字典创建DataFrame,缺失值使用NaN代替:   姓名    职称    封号0  张飞   右将军   新亭侯1  赵云  镇军将军   NaN2  关羽   前将军  汉寿亭侯3  黄忠   后将军   关内侯4  马超   左将军   NaN字典嵌套Series创建DataFrame:  one two0   z   a1   x   s2   c   d使用列索引访问数据:['a' 's' 'd']访问前两行数据:  one two0   z   a1   x   s访问第一行,列名为:two的数据s访问第一行数据one    xtwo    sName: 1, dtype: object插入新列:  one two three0   z   a     q1   x   s     w2   c   d     e使用del删除DataFrame 部分数据  one three0   z     q1   x     w2   c     e使用pop方法删除DataFrame中的数据:  three0     q1     w2     edrop方法 指定删除第一行数据:  one two0   z   a2   c   dappend在末尾添加新数据:  one two0   z   a1   x   s2   c   d3   1   44   2   55   3   6行列转换:      0     1     2    3    4姓名   张飞    赵云    关羽   黄忠   马超职称  右将军  镇军将军   前将军  后将军  左将军封号  新亭侯   NaN  汉寿亭侯  关内侯  NaN年龄   25    22    28   45   30输出行标签,列标签:[RangeIndex(start=0, stop=5, step=1), Index(['姓名', '职称', '封号', '年龄'], dtype='object')]每一列的数据类型:姓名    object职称    object封号    object年龄     int64dtype: object是否为空值,是空值时返回True,否则返回False:FalseDataFrame对象的维数:2DataFrame维度的元组:返回值元组,第一个为行,第二个为列(5, 4)DataFrame元素数量:20以ndarry数组的形式返回DataFrame中的数据:[['张飞' '右将军' '新亭侯' 25] ['赵云' '镇军将军' nan 22] ['关羽' '前将军' '汉寿亭侯' 28] ['黄忠' '后将军' '关内侯' 45] ['马超' '左将军' nan 30]]向下移动一行DataFrame中的数据,数据用无填充:   姓名    职称    封号  年龄0   无     无     无   无1  张飞   右将军   新亭侯  252  赵云  镇军将军   NaN  223  关羽   前将军  汉寿亭侯  284  黄忠   后将军   关内侯  45
温馨提示:
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
回复

使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    626

    主题

    1617

    帖子

    3888

    积分

    论坛元老

    Rank: 8Rank: 8

    积分
    3888
    发表于 2022-5-14 22:11:38 | 显示全部楼层
    沙发
    转发了
    回复

    使用道具 举报

    • 售后服务
    • 关注我们
    • 社区新手

    QQ|手机版|小黑屋|数据通

    Powered by datatong.net X3.4  © 2008-2020 数据通