1.列筛选
(1)某一列&某几列
对于一个表单里面的数据,如果我们想要对于这个表单里面的数据进行处理,我们可以一列一列进行处理,也可以多列一起进行处理;
一列一列处理:
只需要在这个dataframe变量的后面添加上这个中括号和对应想要处理的索引;
下面的data就是这个里面的dataframe变量,中括号里面的就是对应的列索引,相当于是我们只会打印这个表单里面的第三列的数据;
data = pd.read_csv("/Users/yequ/电商数据清洗.csv")
# 使用print()输出变量data中的 "payment" 列
print(data["payment"])
# TODO 使用print()输出变量data中的 "price" 列
print(data["price"])
# 使用print()输出变量data中的 "cutdown_price" 列
print(data["cutdown_price"])
我们如果想要对于上面的这几列的数据进行运算的话,也是可以一列一列的进行运算的;
例如我们下面进行的运算就是每一列的数据都要除以100;
# 将变量data中的 "payment" 列修改为以元为单位的数据
data["payment"] = data["payment"]/100
# TODO 将变量data中 的 "price" 列修改为以元为单位的数据
data["price"] = data["price"]/100
# 将变量data中的 "cutdown_price" 列修改为以元为单位的数据
data["cutdown_price"] = data["cutdown_price"]/100
# 使用print()输出变量data
print(data)
同样是上面的这个数据表单,我们还可以
多列一起进行处理
这个pandas里面可以使用两个中括号里面套着这些数据,就可以实现多列进行相同处理的效果;
这个里面是一共使用了两个中括号的,第一个中括号就是表示的对于这个data的索引值,第二个表示的就是这个中括号里面的内容就是一个简单的列表,对于这个列表里面的数据进行操作;
# TODO 将变量data中的"payment", "price", "cutdown_price" 这三列修改为以元为单位的数据
data[["payment", "price", "cutdown_price"]]
= data[["payment", "price", "cutdown_price"]]/100
# 使用print()输出变量data
print(data)
2.按照index访问数据
一行多列,单个多个数据
使用下面的这个表达作为例子,这个时候我们就可以使用.loc加上对应的行索引找到这一行的元素
print(data.loc[3515712])
上面这个代码就会打印输出这个对应的这一行的信息;,包括这个user_id还有这个后面的各种费用都会打印出来;
访问连续的几行:
因为想要打印的这几行数据是连续的,这个时候就可以使用这个冒号运算符,只需要我们输入这个起始位置和终止位置即可;
# 使用print()和.loc属性输出订单号3515712到3515716的数据
print(data.loc[3515712:3515716])
打印不连续的几行:
使用这个两个中括号,把这几行不连续的索引值全部放进去即可;
print(data.loc[[3515714,3601839,3601842]])
访问单个元素:
只需要给出来这个行标和列标,就可以准确的定位到这个数据,并且打印出来;
print(data.loc[3515712,"payment"])
下面介绍的就是iloc属性,这个属性传递进去的参数就是对应的行标,以此来访问这个行数据
iloc属性:按照这个位置访问对应位置上面的数值;
这个访问的权限和上面介绍的都是一样的,但是这个括号里面的内容就不是向上面一样的这个具体的内容,因为我们使用loc属性的时候,传递进去的参数就是这个price这些使用的是表格里面的数据,这个.iloc属性使用的参数就是对应的下标,不需要我们传递具体的数值;
3.布尔索引
(1)这个数据筛选的方式主要是针对于这个大型数据集,我们可以通过这个方式判断这个数据是不是符合条件的;
(2)我们可以使用两个方括号,里面的中括号返回值就是一个series序列,外面的这个中括号使用里面的这个返回的series作为索引就可以得到新的符合条件的系列;
# TODO 使用print()和布尔索引,输出"cutdown_price"这一列值里大于0的行
print(data[data["cutdown_price"]>0])
(3)如果我们想要一次性对于多个条件进行判断是否符合,这个时候就需要使用逻辑运算符,这个里面代表的意义和上面的一样,需要注意的就是这个括号之间的嵌套;
# TODO 使用print()和布尔索引
# 输出"cutdown_price"这一列值里大于0
# 和"post_fee"这一列值里大于0的行数据
print(data[(data["cutdown_price"]>0)&(data["post_fee"]>0)])
4.时间类型和格式转换
(1)字符串类型转换为时间类型并且进行这个筛选:
# TODO 将data中"购药时间"这一列数据从字符串类型转换为日期类型
data["购药时间"]=pd.to_datetime(data["购药时间"])
# TODO 使用布尔索引,筛选出"购药时间"列中月份等于2的数据,并赋值给data_2018_2
data_2018_2=data[data["购药时间"].dt.month==2]
# 使用print()函数输出data_2018_2
print(data_2018_2)
使用的是pd模块去调用这个to_datatime函数,这个函数的参数就是想要进行修改的列,生成的就是事件类型的数据,把这个字符串类型数据转换为时间类型;
筛选就是选出来这个事件类型里面的月份是二月份的,我们依然是使用这个.dt.month属性进行这个判断,把这个符合条件的赋值给一个新的变量,把这个变量打印输出;
(2)格式转换函数
# TODO 使用astype()函数,将data["身份证号"]转换为str类型
data["身份证号"]=data["身份证号"].astype(str)
上面这个代码部分就是把这个身份证号这一列转换为str类型的数据,调用的就是astype函数;