Pandas个人操作练习(1)创建dataframe及插入列、行操作

Pandas个人操作练习(1)创建dataframe及插入列、行操作使用pandas之前要导入包:importnumpyasnpimportpandasaspdimportrandom#其中有用到random函数,所以导入一、dataframe创建pandas.DataFrame(data=None,index=None,columns=None,dtype=None,copy=False)data:numpy…

大家好,又见面了,我是你们的朋友全栈君。

使用pandas之前要导入包:

import numpy as np

import pandas as pd

import random    #其中有用到random函数,所以导入

一、dataframe创建

pandas.DataFrame(data=Noneindex=Nonecolumns=Nonedtype=Nonecopy=False)

data:numpy ndarray(结构化或同类),dict或DataFrame,Dict可以包含Series,数组,常量或类似列表的对象

index:dataframe的索引,如果没有自定义,则默认为RangeIndex(0,1,2,…,n)

columns:dataframe的列标签,如果没有自定义,则默认为RangeIndex(0,1,2,…,n)

dtype:默认None,要强制的数据类型。 只允许一个dtype

copy:boolean,默认为False

(1)利用randn函数用于创建随机数来快速生成一个dataframe,可以将下句这一部分np.random.randn(8,5)作为参数data,其他默认,可以看到索引和列名都为(0,1,2,,,n),可以看出dataframe最不能缺少的为data

df = pd.DataFrame(np.random.randn(8,5))

Pandas个人操作练习(1)创建dataframe及插入列、行操作

(2)用字典dict来生成一个dataframe

data = {'BoolCol': [1, 2, 3, 3, 4],
        'attr': [22, 33, 22, 44, 66],
        'BoolC': [1, 2, 3, 3, 4],
        'att': [22, 33, 22, 44, 66],
        'Bool': [1, 2, 3, 3, 4]
        }
df = pd.DataFrame(data)

Pandas个人操作练习(1)创建dataframe及插入列、行操作

(2).1自定义索引的dataframe

data = {'BoolCol': [1, 2, 3, 3, 4],
        'attr': [22, 33, 22, 44, 66],
        'BoolC': [1, 2, 3, 3, 4],
        'att': [22, 33, 22, 44, 66],
        'Bool': [1, 2, 3, 3, 4]
        }
df = pd.DataFrame(data,index=[10,20,30,40,50])

Pandas个人操作练习(1)创建dataframe及插入列、行操作

或者这样自定义索引

data = {'BoolCol': [1, 2, 3, 3, 4],
        'attr': [22, 33, 22, 44, 66],
        'BoolC': [1, 2, 3, 3, 4],
        'att': [22, 33, 22, 44, 66],
        'Bool': [1, 2, 3, 3, 4]
        }
index = pd.Index(data=[10,20,30,40,50],name="self_index")
df = pd.DataFrame(data,index=index)

Pandas个人操作练习(1)创建dataframe及插入列、行操作

(3)可以看出像列名‘att’等对应的都是一个list的形式,为例填充这些列名对应的值,首先要把值的形式定义好,形成list

#随机生成3000个test号
#random.sample(range(0,10),6)从0-9这十位数中随机选出6位
test_list=[]
for i in range(3000):
    test_list.append("123456"+"".join(str(s) for s in random.sample(range(0,10),6)))

#生成3000个1-200的随机浮点数,且保留两位小数
test_list2 = [round(random.uniform(1,200),2) for _ in range(3000)]

data = {
    'date':pd.date_range("2000",freq= 'Y',periods=16).year,
    'aa':test_list,
    'test2':test_list2,
    'label':[random.randint(0,1) for _ in range(3000)]
}
  df = pd.DataFrame(data = data)

二、dataframe插入列/多列

添加一列数据,,把dataframe如df1中的一列或若干列加入另一个dataframe,如df2
思路:先把数据按列分割,然后再把分出去的列重新插入
    df1 = pd.read_csv(‘example.csv’)
(1)首先把df1中的要加入df2的一列的值读取出来,假如是’date’这一列
    date = df1.pop(‘date’)
(2)将这一列插入到指定位置,假如插入到第一列
    df2.insert(0,’date’,date)
(3)默认插入到最后一列
    df2[‘date’] = date

2.2插入多列

假如dataframe1.shape=(5,4),dataframe2.shape=(5,6),运行代码:dataframe3=pd.concat([dataframe1,dataframe2], axis=1),则dataframe3.shape=(5,10)。关键点是axis=1,指明是列的拼接

三、dataframe插入行

插入行数据,前提是要插入的这一行的值的个数能与dataframe中的列数对应且列名相同,思路:先切割,再拼接。
假如要插入的dataframe如df3有5列,分别为[‘date’,’spring’,’summer’,’autumn’,’winter’],
(1)插入空白一行
方法一:利用append方法将它们拼接起来,注意参数中的ignore_index=True,如果不把这个参数设为True,新排的数据块索引不会重新排列。
   

insertRow = pd.DataFrame([[0.,0.,0.,0.,0.]],columns = ['date','spring','summer','autumne','winter'])
    above = df3.loc[:2]
    below = df3.loc[3:]
    newData = above.append(insertRow,ignore_index=True).append(below,ignore_index=True)

方法二:用.concat()的方法来进行拼接,注意ignore_index=True
   

newData2 = pd.concat([above,insertRow,below],ignore_index = True)

(2)假设df4中的列数和df3相同,取df4的行插入df3中

df4 = pd.DataFrame({'BoolCol': [1, 2, 3, 3, 4],
                        'attr': [22, 33, 22, 44, 66],
                        'BoolC': [1, 2, 3, 3, 4],
                        'att': [22, 33, 22, 44, 66],
                        'Bool': [1, 2, 3, 3, 4]
                       },
                       index=[10,20,30,40,50])

data = {
    'date':pd.date_range("2000",freq= 'Y',periods=16).year,
    'spring':[random.uniform(12,15) for _ in range(16)],
    'summer':[random.uniform(16,18) for _ in range(16)],
    'autumn':[random.uniform(12,19) for _ in range(16)],
    'winter':[random.uniform(11,15) for _ in range(16)]
}
df3 = pd.DataFrame(data=data)
cols = ['date','spring','summer','autumn','winter']
#df3 = df3.ix[:,cols]
df3 = df3.loc[:,cols]

Pandas个人操作练习(1)创建dataframe及插入列、行操作

<1>.先获取取某一行的索引:

insertRow2_index = df4[df4.Bool == 3].index.tolist()

Pandas个人操作练习(1)创建dataframe及插入列、行操作

<2>.根据索引获取这两行的值:

insertRow2 = []
for x in insertRow2_index:
    #注意.values的使用,只获取值,不带列名
    insertRow2.append(df4.loc[x].values)
insertRow22 = pd.DataFrame(insertRow2)
#修改列名简单粗暴的方法,要改就全改,否则不成功
insertRow22.columns=['date','spring','summer','autumn','winter']
------------------------------------------------------------------------
#灵活修改列名方法,可以选择,默认列名为(1,2,,,n)
insertRow22.rename(columns={'1':'date', '2':'spring','3':'summer', '4':'autumn','5':'winter'}, inplace = True)
根据索引取得这一行的值的不同用法
    (1)#根据自定义的index取一行数据,即用于标签索引
    1.1
    #row = df4.loc[insertRow2_index]
    1.2
    row = df4.loc[insertRow2_index,:].values
    
    -------------------------------------
    (2)#根据系统默认的index取一行数据,即用于位置索引
    row= df4.iloc[insertRow2_index,:].values

Pandas个人操作练习(1)创建dataframe及插入列、行操作

<3>.将insertRow22插入df3:

above = df3.loc[:2]
below = df3.loc[3:]
newData = above.append(insertRow22,ignore_index=True).append(below,ignore_index=True)

Pandas个人操作练习(1)创建dataframe及插入列、行操作

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/130125.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ieee754标准一个浮点数由什么组成_某数采用ieee754单精度浮点数格式

    ieee754标准一个浮点数由什么组成_某数采用ieee754单精度浮点数格式浮点数(Floating-pointNumber)是对实数的一种近似表示,由一个有效数字(即尾数)加上幂数来表示,通常是乘以某个基数的整数次幂得到。以这种表示法表示的数值,称为浮点数。

    2022年10月22日
    0
  • CIFAR-10 数据集「建议收藏」

    CIFAR-10 数据集「建议收藏」CIFAR-10数据集简介CIFAR-10是由Hinton的学生AlexKrizhevsky和IlyaSutskever整理的一个用于识别普适物体的小型数据集。一共包含10个类别的RGB彩色图片:飞机(a叩lane)、汽车(automobile)、鸟类(bird)、猫(cat)、鹿(deer)、狗(dog)、蛙类(frog)、马(hor…

    2022年4月19日
    37
  • Apache Struts2打开重定向/命令执行 CVE-2013-2251「建议收藏」

    Apache Struts2打开重定向/命令执行 CVE-2013-2251「建议收藏」昨日,著名JavaWeb框架Struts官方再发高危安全漏洞补丁升级(最新版本为:2.3.15.1),升级修补了多个安全漏洞,其中包括一个远程任意代码的高危安全漏洞,这些漏洞可以影响到Struts2.0.0-Struts2.3.15的所有版本。攻击者可以利用该漏洞,执行恶意Java代码,最终导致网站数据被窃取、网页被篡改等严重后果。基于Struts2使用广泛,目前很多网站还没有升级,另外

    2022年7月13日
    14
  • 国外企业电子邮箱大全,国外用邮箱哪个好?怎么注册国外邮箱?「建议收藏」

    国外企业电子邮箱大全,国外用邮箱哪个好?怎么注册国外邮箱?「建议收藏」外贸、物流、留学移民等公司都会用到能往国外发邮件的邮箱。在知乎上看到,TOM企业邮箱国内国外都能用,移动办公也方便。国外用邮箱群发邮件群发开发信、给客户群发节日祝福都会企业邮箱的邮件群发功能。用群发单显能起到事半功倍的效果,如下图,登录邮箱后,点击【写邮件】,再点击【群发单显】就能一次几百封的群发邮件了。如何是给公司所有员工群发邮件通知,还是邮件群组更方便。像微信群一样,把所有人拉到一个群组里,往这个组里发通知,群里其他人都能收到,适用于公司内部多部门、跨地区管理沟通。TOM这个国际邮箱之所以用的

    2022年7月12日
    71
  • django分页器的用法_佳能分页器使用

    django分页器的用法_佳能分页器使用前言当后台返回的数据过多时,我们就要配置分页器,比如一页最多只能展示10条等等,drf中默认配置了3个分页面PageNumberPagination:基础分页器,性能略差LimitOffsetP

    2022年8月7日
    1
  • STM32中文参考手册_STM32读取ESP8266数据

    STM32中文参考手册_STM32读取ESP8266数据http://blog.csdn.net/u012722571/article/details/47295245lanmanck原创】这篇文章已经说了STM32的启动过程:http://blog.csdn.net/lanmanck/article/details/8252560我们也知道怎么跳到main函数了,那么,中断发生后,又是怎么跑到中断入口地址的呢?从stm

    2022年10月25日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号