python dataframe 去重_小白踩坑记第二章:Python第二期

ee168103e5652085c5e79c6a9e71860f.gif

efe4149046604ba94c856bc4edba7361.png

Q

3865df1a3f149ac2a5067e1c0508a25a.png

b[0:2,:3]=100 #这个应该是将第0行和第1行&第3列都改成100吗,出来的结果第三列并没有变化」

A

这个可以叫切片,指定索引修改数组中的数值。3:是从3开始往后,:3是从0开始到3,3不取。另外,.r直接切片,拼接可以用.stack

61f77bab2707184248b90b9e0750ae6c.png de10dd722dce675e8b4d115e7f998439.png 3bf9fed0d75df8ff941a73b89bab4580.png

Q

3865df1a3f149ac2a5067e1c0508a25a.png

第一个问题,打开文件不用open()

A

读取文件的方式有很多种,open是一种,这里是一种

61f77bab2707184248b90b9e0750ae6c.png de10dd722dce675e8b4d115e7f998439.png 0e0f8814005810acf0e583c2c87a8d99.png

Q

3865df1a3f149ac2a5067e1c0508a25a.png

第二问题,np.loadtxt方法是啥意思

A

就是读取txt文件中的信息

61f77bab2707184248b90b9e0750ae6c.png de10dd722dce675e8b4d115e7f998439.png caf978ef60617ffbc047dca7faf61f42.png

Q

3865df1a3f149ac2a5067e1c0508a25a.png

第三个问题,n_samples,n_features = x.shape这个shape 啥意思

A

shape相当于一个方法,这涉及到基础语法。代码中给了shape的注释。

61f77bab2707184248b90b9e0750ae6c.png de10dd722dce675e8b4d115e7f998439.png 0e0f8814005810acf0e583c2c87a8d99.png

Q

3865df1a3f149ac2a5067e1c0508a25a.png

第三个问题,n_samples,n_features = x.shape这个shape 啥意思

A

shape相当于一个方法,这涉及到基础语法。代码中给了shape的注释,shape就是数组的形状,几行几列。

61f77bab2707184248b90b9e0750ae6c.png 3174b3d6c5de3d305fb8838fdf5e26c4.png 1b8cdb04b5f13ea524261b9feda15ebc.png

Q

3865df1a3f149ac2a5067e1c0508a25a.png

if sample[2] ==1:

    num_bread_purchases+=1

这个if 中,上一个不是说sample是在x中for循环,那就是元素,怎么还有sample[]

A

sample[i]表示第几个特征,共五个特征。

61f77bab2707184248b90b9e0750ae6c.png de10dd722dce675e8b4d115e7f998439.png 0e0f8814005810acf0e583c2c87a8d99.png

Q

3865df1a3f149ac2a5067e1c0508a25a.png

这个去重,前面为啥为啥是u,in6b13f42463a8fcf4abc38b087ae41031.png

A

就是给u和indice两个变量同时赋值,避免写两次。unique返回值由两个值组成,用两个变量承接。

61f77bab2707184248b90b9e0750ae6c.png 3174b3d6c5de3d305fb8838fdf5e26c4.png 3bf9fed0d75df8ff941a73b89bab4580.png

Q

3865df1a3f149ac2a5067e1c0508a25a.png

display和print 区别?网上没有搜到。下面这个,输出不了

import pandas as pd

from pandas import Series,DataFrame

import numpy as np

#合并

df1=pd.DataFrame(np.arange(6).reshape(3,2),columns=['four','five'])

df2= pd.DataFrame(np.arange(6).reshape(2,3),columns=['one','two','three'])

display(df1,df2)

NameError: name 'display' is not defined

A

在jupyter notebook才能,显示出来是一个表格。print(display(df1,df2))试一下,如果显示缺什么库下载就好。

61f77bab2707184248b90b9e0750ae6c.png 3174b3d6c5de3d305fb8838fdf5e26c4.png b0888867fd2aed58a8ab5abc0f308ff0.png

Q

3865df1a3f149ac2a5067e1c0508a25a.png

在字典里的时候明明是省份在前,为啥输出的时候就是pop在前面。

7dcbd2332808ad08beb2e7695424d506.png

A

我们输出是对的的,应该是你环境的问题,或者之间输出导致的缓存,清理一下。

61f77bab2707184248b90b9e0750ae6c.png de10dd722dce675e8b4d115e7f998439.png 798955578882f04403b343b8c94b5627.png

   Q

8174f5b50201941fd330eda479ed6050.png

import  xlrd

data = xlrd.open_workbook(r'C:/Users/WT/Deskto/1.xlsx')

table=xlsx.sheet_by_index(0)

#索引index(n)中的参数代表第n个表

print(table.cell_value(0,0))

print(table.cell_value(0,1))

print(table.cell_value(1,3))

print("----------------------")

print(table.cell(1,3).value)

print(table.row(1)[3].value)

print("======================")

print(table.cols(1)[3].value)

A

桌面拼写错误,第二次没加后缀

e0bfd525f51c5f0274053e84674c8a7a.png 2c776cfb48a51c5b27422daaa467d089.png 10721a5f4ec050a50bca8ee95a0adc52.png

Q

8174f5b50201941fd330eda479ed6050.png

为什么会变成#号了

03ee5704afeb576b2349489d25ded52c.png

A

改一下单元格格式,单元格宽度,拉一下

e0bfd525f51c5f0274053e84674c8a7a.png 2c776cfb48a51c5b27422daaa467d089.png 32e64d34cd6ceaed77ae3befd0c23d4c.png

Q

8174f5b50201941fd330eda479ed6050.png

我思路局限了,我做的字典,然后for循环查询出来写进去的,应该没有比这更蠢的办法了

1d1c843b96bedd6bb41921a8d979a8e0.png

A

pandas 没有可以对比列的方法么?然后读取进来 就是一个 DataFrame,然后取 sn 与另一个 相比较 pandas 也可以排除重复值。取日期那一列 取最近的,那个读取多个txt 文件的 就是一个案例。

e0bfd525f51c5f0274053e84674c8a7a.png 2c776cfb48a51c5b27422daaa467d089.png 10721a5f4ec050a50bca8ee95a0adc52.png

Q

8174f5b50201941fd330eda479ed6050.png

想问下这个的话,是怎么个改法:writer = pd.ExcelWriter('C:\\Users\\JackFeng\\Desktop/1/{table_name}_666.xlsx'.format(table_name=table_name))

我直接改成了自己xls文件的路径 writer = pd.ExcelWriter('/Users/kath/Desktop/py-excel/1.xls')

我是将dataframe写入excel,但是没写入任何东西

A

你没有读取哪来写,dataframe 有to excel的方法

e0bfd525f51c5f0274053e84674c8a7a.png 2c776cfb48a51c5b27422daaa467d089.png 798955578882f04403b343b8c94b5627.png

Q

8174f5b50201941fd330eda479ed6050.png

小姐姐有空的话可以分享一下你的解题思路呀,有重复的怎么处理呀

3c0f5d9e27c458e2e199bd1a3b4149d5.png

A

8174f5b50201941fd330eda479ed6050.png

我的思路就是:先读取表格到dataframe,再用merge函数并表,然后把新表写入excel。

798955578882f04403b343b8c94b5627.png

Q

8174f5b50201941fd330eda479ed6050.png

看了那个代码,发现是改名SN为盒子SN然后合并,而困扰我的主要矛盾:排除重复项挑出日期最近的、进一步优化标注处理多余项等,解决方案好像不在里面唉,比如说我把4~6行数据改重复,怎么挑出5除去4和6

a915d7d60fdd2cd35f51acde156c167f.png

A

groupby 然后再取日期得。拿sql 更加简单了,造个数据试试就知道了,https://www.jianshu.com/p/ae94c28f2ad8 参考一下这个,均值换成 日期。

e0bfd525f51c5f0274053e84674c8a7a.png 2c776cfb48a51c5b27422daaa467d089.png

A

那么 还有一个问题思考一下:日期不是最大就一定就是对的,比如 6.1和 5.31是否需要转换成时间戳再做比较,怎么能确保就是最近的那个

e0bfd525f51c5f0274053e84674c8a7a.png 2c776cfb48a51c5b27422daaa467d089.png 3c0f5d9e27c458e2e199bd1a3b4149d5.png

A

8174f5b50201941fd330eda479ed6050.png

groupby就可以做到去重&筛出日期最大的那个了,标黄是我加的重复项。

groupby之后只留下了一条

15f1758d12464c85d0f7cc7eeada57e1.png

798955578882f04403b343b8c94b5627.png

Q

8174f5b50201941fd330eda479ed6050.png

groupby之后只留下了一条?我好像不行,你改成4/22试下可以吗

798955578882f04403b343b8c94b5627.png

Q

8174f5b50201941fd330eda479ed6050.png

出来的改成4/22的话,跑出来就是第二条4/25咯,发现出现问题是排序后同一行数据有变化了,因为你同一行的其它数据都一样

32e64d34cd6ceaed77ae3befd0c23d4c.png

A

8174f5b50201941fd330eda479ed6050.png

我觉得这个多行不一样的,groupby不能解决(类似像excel的数据透视表也不能酱紫玩的),所以要么是先单独将日期列groupby,再写回原表,再做merge?如果是这样,那不如先排序再去重简单点

798955578882f04403b343b8c94b5627.png

A

8174f5b50201941fd330eda479ed6050.png

它是按每列排序然后去重,并没有考虑行

f6bce2de84cbae3dbd8f04b787cc29aa.png

Q

8174f5b50201941fd330eda479ed6050.png

有大神懂python自动化测试unittest用例封装吗?我想请教个问题

77a1e3ccc96d4b0836ca07079f2f4c43.png

4cb09c72820f3541a0cdd53da127cdb4.png

A

8174f5b50201941fd330eda479ed6050.png

试试测试套件,一般多个用例不是都放在套件里执行的吗。或者在第一个用例加一个关闭连接的操作。期望值和预期值不相等

73658d47dc1f64a2b02c00969015902d.png

a5f2b4378cc30feb219e9c38df7299c5.png

小白踩坑记第一章:Python第一期

喜欢就点个在看吧~ 7edbaee012c27f6e5841a4e9432c1b98.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值