目录

  • 数据准备
  • 增加列
  • 增加行
  • 删除行
  • 删除列
  • 修改表元素
  • 修改列标签
  • 修改行标签
  • 单条件查询
  • 多条件查询
  • 附录代码


数据准备

工具包导入及工作路径设置:

python在数据结尾增加一行数据怎么弄的 python数据分析增加一行数据_python


数据导入:

python在数据结尾增加一行数据怎么弄的 python数据分析增加一行数据_数组_02


为了方便读者实操,这里附上原表:jingdian1.csv

增加列

增加列的方法有多种,这里列举两种。

增加“评级”列,level大于等于90的设为“高”,小于90设为“低”:

python在数据结尾增加一行数据怎么弄的 python数据分析增加一行数据_ci_03


上面的插入方法相当于先按给定条件创建了一个数组,再将数组插入到df1中作为最后一列,利用insert方法可以指定插入位置,但列名不能使用中文:

python在数据结尾增加一行数据怎么弄的 python数据分析增加一行数据_数组_04

增加行

增加行的方法也有多种,通常都是在表格最后一行后增加,如loc、append和row_stack方法。

loc

python在数据结尾增加一行数据怎么弄的 python数据分析增加一行数据_python_05

PS:当此表格改变时,这里自定义的索引会被重置,从下面的操作中就可以看出。

append

python在数据结尾增加一行数据怎么弄的 python数据分析增加一行数据_ci_06


需要合并数据表的可以这样:

python在数据结尾增加一行数据怎么弄的 python数据分析增加一行数据_ci_07


这里的 ignore_index 默认值为 False,此时插入的行默认索引将从0开始计算,此时若通过默认索引来筛选数据,则会出现同一索引条件可筛选出多个结果,类似下图:(读者可自行测试)

python在数据结尾增加一行数据怎么弄的 python数据分析增加一行数据_ci_08


row_stack:(处理DataFrame不推荐使用,对应column_stack为增加列)

row_stack方法输出结果为数组,需再将其转换成DataFrame,并且列标签也需重新定义。

python在数据结尾增加一行数据怎么弄的 python数据分析增加一行数据_数据分析_09

删除行

删除行通常使用drop方法,可以利用参数 inplace 自行选择是否更改原数据,默认 inplace = False,即不更改原表。

python在数据结尾增加一行数据怎么弄的 python数据分析增加一行数据_数组_10


也可以通过“inplace = True”改变原表:

python在数据结尾增加一行数据怎么弄的 python数据分析增加一行数据_ci_11


除了根据默认索引删除外,也可以指定行标签进行删除:

python在数据结尾增加一行数据怎么弄的 python数据分析增加一行数据_python_12


一次性删除多行也可以使用迭代器(range):

python在数据结尾增加一行数据怎么弄的 python数据分析增加一行数据_python_13

删除列

这里展示3种删除列的方法:

1)del方法

python在数据结尾增加一行数据怎么弄的 python数据分析增加一行数据_ci_14


2)pop方法

pop方法能将所选列从原数据表中取出,并且原数据表将不在含有该列。

python在数据结尾增加一行数据怎么弄的 python数据分析增加一行数据_python_15


3)drop方法

drop方法删除列与删除行都可以通过 inplace 参数设置是否更改原表,继续使用上面更改后的表df1:

python在数据结尾增加一行数据怎么弄的 python数据分析增加一行数据_数据分析_16


这里的 axis = 1 表示对列进行操作。

修改表元素

python在数据结尾增加一行数据怎么弄的 python数据分析增加一行数据_数组_17


这里的修改是先选择了特定的行列值,再重新赋值。

修改列标签

python在数据结尾增加一行数据怎么弄的 python数据分析增加一行数据_数据分析_18

修改行标签

python在数据结尾增加一行数据怎么弄的 python数据分析增加一行数据_数据分析_19


重置索引

python在数据结尾增加一行数据怎么弄的 python数据分析增加一行数据_数据_20

单条件查询

查找评论数大于20000的景点:

python在数据结尾增加一行数据怎么弄的 python数据分析增加一行数据_python_21

python在数据结尾增加一行数据怎么弄的 python数据分析增加一行数据_数据分析_22


可以使用 “~” 符号查找相反条件,即评论数小于等于20000:

python在数据结尾增加一行数据怎么弄的 python数据分析增加一行数据_python_23

多条件查询

python在数据结尾增加一行数据怎么弄的 python数据分析增加一行数据_python_24


PS:单个条件需要用括号括起来,条件之间用 “&” 连接。between方法

python在数据结尾增加一行数据怎么弄的 python数据分析增加一行数据_python_25


这里的“inclusive = True”表示区间包含500和1500,即取闭区间,对应“inclusive = False”表示取开区间isin方法

指定元素值查找可以使用 isin 方法,字符型数据需加引号。

python在数据结尾增加一行数据怎么弄的 python数据分析增加一行数据_python_26

附录代码

import pandas as pd
import numpy as np
import os
os.chdir('D:\practice')#设置当前工作路径
df1 = pd.read_csv('jingdian1.csv',encoding = 'utf-8') #读取数据
df1

*****增*****
#增加“评级”列
df1['评级'] = np.where(df1['level'] >= 90,'高','低')
df1

#按给定条件生成数组
df2 = np.where(df1['level'] >= 90,'高','低')
#将数组df2放到df1的第8列
df1.insert(7,'pingji',df2)#列名只能用英文字符或数字
df1

#自定义行标签/索引增加行
df1.loc['aa'] = [1,2,3,4,5,6,7,8,9,10,11]
df1

#字典形式手动增加数据
df1.append([{'province':'广东','city':'深圳'}],ignore_index = True)
#DF = df1.append([{'province':'广东','city':'深圳'}],ignore_index = False)
#DF.loc[0,'city']#筛选行索引值为 0 ,列索引值为“city”的数据

#DataFrame合并
df3 = df1[0:2]
df1.append([df3],ignore_index = True)

#row_stack方法
arr1 = np.array([1,2,3,4,5,6,7,8,9,10,11])
arr2 = np.row_stack((df1,arr1))
df4 = pd.DataFrame(arr2)
df4

*****删*****
#删除上面 df4 的最后三行
dfa = df4.drop([9,10,11])
dfa

#按默认索引值删除
df4.drop([9,10,11],inplace = True)
df4

#按行标签删除
df4.drop(labels=[0,1],inplace = True)
df4

#使用迭代器快速删除多行
df4.drop(labels=range(3,8),inplace = True)#区间左闭右开
df4

#将df1的插入列“pingji”删除
del df1['pingji']
df1

#取出df1中的“评级”列
PingJi = df1.pop('评级')
PingJi
df1

#删除df1中的经纬度两列
dfa = df1.drop(['lat','lng'],axis = 1,inplace = False)
dfa

*****改*****
#修改df1的dname值
df1.loc[df1['dname']=='外滩','dname'] = '上海外滩'
df1

#修改列标签/列名/列索引值
df1.rename(columns = {'strategy':'攻略数','comment':'评论数'},inplace = True)
df1

#修改行标签/行索引值
df1.rename(index = {2:2333,6:666},inplace = True)
df1

#重置索引
df1.reset_index(drop = True,inplace = True)
df1

*****查*****
#查找评论数大于20000的行
df1['评论数'] > 20000 #返回布尔值
df1[df1['评论数'] > 20000] #返回DataFrame

#查找相反条件
df1[~(df1['评论数'] > 20000)]

#查找评论数大于20000且攻略数小于1000的景点
df1[(df1['评论数'] > 20000) & (df1['攻略数'] < 1000)]

#between方法
df1['攻略数'].between(500,1500,inclusive = True) #返回布尔值
df1[df1['攻略数'].between(500,1500,inclusive = True)] #返回DataFrame

#isin方法
df1[ df1['评论数'].isin([35824,13811]) ]