Python数据分析——一些简单实用技巧记录


1、selenium初始化
(1)options = webdriver.ChromeOptions()
options.add_argument("--headless")隐藏窗口
(2)bs4中BeautifulSoup的用法
soup = BeautifulSoup(html,'lxml'/'html.parser')
soup.标签,返回所有对应的标签
.attrs,返回标签下的属性,需要具体的标签指向
text,name,string,get_text()同上
soup.p.contents ,返回p标签的子节点内容,同时包含换行符
获取子节点:soup.p.contents,soup.p.children
获取子孙节点:soup.body.descendants
获取父节点:soup.p.parent
获取兄弟节点:soup.p.next_siblings
find/find_all:find返回第一个,find_all返回所有
select选择器:选择对应的标签,class:.值,id:#值
对于代码不齐全的情况,可以用soup.prettify()自动补齐
soup.prettify() # 自动补齐
(3)元素值包含某个字符的定位方法:t = browser.find_elements(By.XPATH, '//a[contains(text(),"PR6347")]')
2、 打印信息提示
print("信息".center(50,'*'))
3、 查看df的前后记录信息
df.head() && df.tail()
4、df[column] = df[column].apply(str) 将字段转化为str格式
df[column] = df[column].astype('str') or astype("int") or astype("float")  字段格式的转化
5、字段的分离或者文本替换处理
df[column] = df[column].str.split(' ',expand=True)[i] 分离
df[column] = df[column].str.replace(' ','')  替换
6、时间处理:
1)pd.to_datetime(),将str转化成时间格式
2)datetime.now().strftime('%Y-%m-%d %H:%M:%S')  将时间格式转化为特定的时间格式
7、分组后的数据聚合
典型例子:df.groupby(['姓名','日期']).apply(lambda t:t[t['事件发生时间']==t['事件发生时间'].min()])
返回分组中事件发生时间列中时间最小的记录,多条记录的聚合筛选
8、df.to_excel(path,index=False)中index=False目的是设置不导出索引
9、enumerate()返回索引和值
10.groupby('key').agg(['max','min','median'])
11、groupby('key').agg({'data':'min','data1':'max'})
12、重置索引:reset_index(drop=True),不保留前索引
13、返回标签值,np.where(判断逻辑,true,false)
df[column] = np.where(df[column].isna()/df[column].notna(),df[column1],df[column2])
14、向指定列中插入新字段:df.insert(索引,字段名,)
15、去除重复值:df.drop_duplicates()
16、左连接:
pd.merge(左表,右表,how='left',left_on='',right_on='')
如果左右表连接的字段一样则:
pd.merge(左表,右表,how='left',on='')
17、删除一列
del df[column]
18、删除多列
df.drop(columns = [column1,column2,column3])
删除多行,利用筛选的条件
df = df[df[column]==/!=某个值]  (赋值后对原数据进行了更改)
19、os操作:
os.listdir(path) 以列表的形式返回文件夹下所有的文件名信息
os.path.exists(path) 返回bool值,判断路径是否存在
os.getcwd()  获取当前路径
filedialog.askopenfilename(title='选择文件',filetypes=[('Excel文件',"*.xls*")]) 文件选择
20、dataframe的默认属性
df.columns,df.index
21、获取位置信息
逻辑运算符:&、|、~ (与,或,非)
行记录筛选:
df[(df[column1]<1)&(df[column2]>10)] :筛选出满足两个条件的记录
行列同时筛选:
df.loc[(df['c']>4) & (df['D']<4),(df.loc[0] ==1) & (df.loc[3] == 2)]
contains函数的使用,df[column].str.contains('str') 返回True or False
loc函数的使用 data = df.loc[df[column]<=10] 与 df[df[column]<=10]的运行结果是一致的
* 筛选出名称为B001和A001的蛋白质和评级数据 name 为index时,
test = df.loc[['B001','A001'],['protein','rank']]
基础概念:loc函数与iloc函数的区别
(1)loc()函数,是按照标签来提取数据,第1个参数是index,第2个参数是column,可以是字段名称
(2)iloc函数,是按位置选择数据,只接受整数型的参数
22、创建空的dataframe表
df = pd.DataFrame()
23、做数据合并,需要字段名称一致:pd.concat([df1,df2],ignore_index=True)
24、数据排序
df.sort_values([column1,column2],ascending=False),其中ascending参数设置顺序或倒序,默认为True顺序
25、# 以列表返回列表中重复元素的索引
def get_same_element_index(test_list,word):
    return [i for (i,v) in enumerate(test_list) if v == word]
test_list = [1,3,3,5,6,3,2,7,3,45,7,4,4,9]
get_same_element_index(test_list,7)
26、读取excel表时,设置参数sheet_name=None读取所有的sheet子表
可以通过df.keys()访问sheet表的具体名称,然后进行相应的访问
27、去除空值 df.loc[df[column].notna()]
28、openpyxl库的基本使用:
wb = openpyxl.load_workbook(filepath)
sheet = wb.active() 使用当前表
sheet.append(final_list)
wb.save(filepath)
29、series筛选后的index转化为列表的方式存储
list(df[column].loc[df[column1]==value].index)
30、将某个字段的空值填充为0
df[column].fillna(0,inplace=True) 参数inplace为改变原表数据
31、程序运行的节点时间:
datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
32、生成全局变量调用(import 文件)
33、suppress=True 取消科学记数法
threshold=np.nan 完整输出(没有省略号)
import numpy as np
np.set_printoptions(suppress=True, threshold=np.nan)
34、display.max_columns 显示最大列数
display.max_rows 显示最大行数
import pandas as pd
pd.set_option('display.max_columns', 10000, 'display.max_rows', 10000)
35、datetime转化为date格式类型
df.datetime = df.datetime.dt.date
或者 df.datetime = df.datetime.apply(lambda x: x.strftime('%Y-%m-%d'))
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值