<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Haaaley's Notebook]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/haley_yuen</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; haley_yuen]]></copyright><item><title><![CDATA[【Python_046】网页爬虫（绕过SSH认证）]]></title><link>https://blog.youkuaiyun.com/haley_yuen/article/details/124429500</link><guid>https://blog.youkuaiyun.com/haley_yuen/article/details/124429500</guid><author>haley_yuen</author><pubDate>Tue, 26 Apr 2022 15:53:31 +0800</pubDate><description><![CDATA[此篇博客介绍如何用python进行网页爬虫，对一些需要登陆的网页可绕开SSH认证

STEP 1  从谷歌商店 下载chromedriver
STEP 2 把文件放在local/bin 文件夹下，由于我用anaconda, 所以我放置的文件夹是anaconda3/bin

from selenium import webdriver

#1.创建Chrome浏览器对象，这会在电脑上在打开一个浏览器窗口，此步会直接绕过SSH认证
browser = webdriver.Chrome()

#2.通过浏览器向.]]></description><category></category></item><item><title><![CDATA[【Excel VBA】一键取消excel中所有隐藏sheet]]></title><link>https://blog.youkuaiyun.com/haley_yuen/article/details/122598870</link><guid>https://blog.youkuaiyun.com/haley_yuen/article/details/122598870</guid><author>haley_yuen</author><pubDate>Thu, 20 Jan 2022 12:25:01 +0800</pubDate><description><![CDATA[本篇博客分享在Excel中通过设置VBA， 一键取消excel中所有隐藏sheet


[Developer] - [Visual Basic]
复制下列代码

Sub unhide_all_tabs()

Dim i As Integer

For i = 1 To Sheets.Count

    Sheets(i).Visible = True

Next i

End Sub



把该excel另存为 xlam格式
打开新的excel，就可以运行。 也可以自定义添加在工具栏上



...]]></description><category></category></item><item><title><![CDATA[MAC 常用快捷键，生产力提升X10000]]></title><link>https://blog.youkuaiyun.com/haley_yuen/article/details/122372458</link><guid>https://blog.youkuaiyun.com/haley_yuen/article/details/122372458</guid><author>haley_yuen</author><pubDate>Fri, 07 Jan 2022 21:36:13 +0800</pubDate><description><![CDATA[因工作关系，新换的电脑为macbook，第一次用OS系统工作，对各种快捷键摸索了好一阵。
以此篇博客记录一下，常用到的快捷键

写在前面
mac中快捷键主要用到三个：

Command ⌘
Option ⌥
Shift ⇪
Control ⌃

其中，Command ⌘相当于win系统中的ctrl，用惯win的同学可以先试着把ctrl换成command试试看，80%快捷键都通用
窗口操作

Command ⌘ + Tab   – 切换应用
Command ⌘ + ~ – 切换同一应用中不同窗口
Comma.]]></description><category></category></item><item><title><![CDATA[【Python_045】pandas读取csv | 设置显示所有列 | 只读取某几列前几行]]></title><link>https://blog.youkuaiyun.com/haley_yuen/article/details/115089180</link><guid>https://blog.youkuaiyun.com/haley_yuen/article/details/115089180</guid><author>haley_yuen</author><pubDate>Mon, 22 Mar 2021 18:00:59 +0800</pubDate><description><![CDATA[本篇介绍一些pd.read_csv不常用但方便的小技巧

设置显示所有列
import panda as pd
df = pd.read_csv(r"C:\Users\Haley\Desktop\Test.csv")
pd.set_option("display.max.columns",None)
df

只读取某几列
import panda as pd
df = pd.read_csv(r"C:\Users\Haley\Desktop\Test.csv", usecols=['COL1','COL2.]]></description><category></category></item><item><title><![CDATA[【Python_044】当Pandas遇上Numpy]]></title><link>https://blog.youkuaiyun.com/haley_yuen/article/details/115057019</link><guid>https://blog.youkuaiyun.com/haley_yuen/article/details/115057019</guid><author>haley_yuen</author><pubDate>Sun, 21 Mar 2021 21:52:03 +0800</pubDate><description><![CDATA[题目来源于和鲸社区，之前几篇链接????????
pandas数据处理
Pandas基础 | 实战

# 1.导入并查看pandas与numpy版本
import pandas as pd
import numpy as np
pd.__version__
np.__version__

# 2.从NumPy数组创建DataFrame
#备注 使用numpy生成20个0-100随机数，以下都是随机数
df1 = pd.DataFrame(np.random.randint(1,100,20))

# 3.从]]></description><category></category></item><item><title><![CDATA[【Python_043】pandas 金融数据处理实战]]></title><link>https://blog.youkuaiyun.com/haley_yuen/article/details/115036333</link><guid>https://blog.youkuaiyun.com/haley_yuen/article/details/115036333</guid><author>haley_yuen</author><pubDate>Sat, 20 Mar 2021 22:29:17 +0800</pubDate><description><![CDATA[数据集与题来源于和鲸社区

# 1.使用绝对路径读取本地Excel数据
import pandas as pd
df = pd.read_excel(r"D:\Haley\Python Project\600000.SH.xls",converters={'A股流通市值(元)':str,'总市值(元)':str,'A股流通股本(股)':str})
# 2.查看数据前三行
df.head(3)
'''
日期	代码	简称	前收盘价(元)	开盘价(元)	最高价(元)	最低价(元)	收盘价(元)	成交量(股)	成.]]></description><category></category></item><item><title><![CDATA[【Python_042】Pandas数据处理]]></title><link>https://blog.youkuaiyun.com/haley_yuen/article/details/114981014</link><guid>https://blog.youkuaiyun.com/haley_yuen/article/details/114981014</guid><author>haley_yuen</author><pubDate>Thu, 18 Mar 2021 15:35:07 +0800</pubDate><description><![CDATA[来源 和鲸社区 和鲸训练营 第二期
第一期笔记见Pandas基础 | 实战

import pandas as pd
import numpy as np

# 1.读取本地EXCEL数据
df = pd.read_excel(r"E:\pandas120.xlsx")

# 2.查看df数据前5行
df.head()
'''
createTime	education	salary
0	2020-03-16 11:30:18	本科	20k-35k
1	2020-03-16 10:58:48	本科	20k-.]]></description><category></category></item><item><title><![CDATA[【Python_041】Pandas基础 | 实战]]></title><link>https://blog.youkuaiyun.com/haley_yuen/article/details/114941552</link><guid>https://blog.youkuaiyun.com/haley_yuen/article/details/114941552</guid><author>haley_yuen</author><pubDate>Wed, 17 Mar 2021 23:12:45 +0800</pubDate><description><![CDATA[pandas 用法千千万，没有实战一个语法都记不住。
本文例题来自和鲸训练营， 非广，亲测社区干货很多


]]></description><category></category></item><item><title><![CDATA[【Python_040】遍历excel中多个sheet合并数据]]></title><link>https://blog.youkuaiyun.com/haley_yuen/article/details/114879452</link><guid>https://blog.youkuaiyun.com/haley_yuen/article/details/114879452</guid><author>haley_yuen</author><pubDate>Tue, 16 Mar 2021 14:07:53 +0800</pubDate><description><![CDATA[之前分享过合并多个excel，详见
用PowerQuery合并多个execl文件
遍历文件夹中所有excel合并到一个文件中

本篇博客介绍 遍历excel中多个sheet合并数据

import xlrd
import pandas as pd
excel = r"C:\Users\Haley\Desktop\file_name.xlsx"
wb = xlrd.open_workbook(excel)
sheets = wb.sheet_names()

alldata = pd.DataFrame().]]></description><category></category></item><item><title><![CDATA[【Python_039】anaconda安装配置 | Jupyter Notebook配置]]></title><link>https://blog.youkuaiyun.com/haley_yuen/article/details/114333310</link><guid>https://blog.youkuaiyun.com/haley_yuen/article/details/114333310</guid><author>haley_yuen</author><pubDate>Wed, 03 Mar 2021 20:44:12 +0800</pubDate><description><![CDATA[写了这么多篇关于py的博客，本篇介绍一下anaconda的安装，之前踩了不少坑。毕竟对新手来说，py就是从安装到放弃。希望本篇博客可以帮助到大家

anaconda安装配置
这篇教程很全面，对于这部分我不过多赘述，大家可以直接移步这篇????
anaconda的安装与环境配置
jupyter 自定义存放路径

在cmd输入 jupyter notebook --generate-config

根据上述路径找到上述文件，然后用记事本或者notepad ++ 打开
找到

	#c.NotebookApp.no]]></description><category></category></item><item><title><![CDATA[【Python_038】算法 | 狄克斯特拉算法(Dijkstra)]]></title><link>https://blog.youkuaiyun.com/haley_yuen/article/details/113849787</link><guid>https://blog.youkuaiyun.com/haley_yuen/article/details/113849787</guid><author>haley_yuen</author><pubDate>Thu, 18 Feb 2021 17:07:37 +0800</pubDate><description><![CDATA[上篇博客介绍了广度优先搜索。本篇博客介绍狄克斯特拉算法，可以算是BFS进阶版（加上了权重的考量）
书籍参考：《算法图解》

狄克斯特拉算法

找出加权图中前往X的最短路径
狄克斯特拉算法只适用于无负权重的有向无环图（无向图意味着两个节点彼此指向对方，其实就是环）
有负权重的参考贝尔曼-福德算法（Bellman-Ford algorithm）

算法思路：

找出“最便宜”的节点，即可在最短时间内到达的节点。
对于该节点的邻居，检查是否有前往它们的更短路径，如果有，就更新其开销（找出图中最便宜的节点，并确保.]]></description><category></category></item><item><title><![CDATA[【Python_037】算法 | 广度优先搜索BFS]]></title><link>https://blog.youkuaiyun.com/haley_yuen/article/details/113843509</link><guid>https://blog.youkuaiyun.com/haley_yuen/article/details/113843509</guid><author>haley_yuen</author><pubDate>Thu, 18 Feb 2021 11:13:23 +0800</pubDate><description><![CDATA[本篇博客介绍广度优先搜索 (breadth-first search, BFS)

广度优先搜索


一种图算法


可回答用于两类问题：

从节点A出发，有前往节点B的路径吗？
从节点A出发，前往节点B的路径中哪条路径最短？



本质上就是一个队列（先进先出，也称为FIFO – First In First Out）


具体实例

*上图源于《算法图解》

问题： 利用BFS找到最近的名字结尾带M的朋友

算法思路：

从自己开始，依次检查自己的一度好友
若一度好友中没有符合条件的名字，则将好友的好.]]></description><category></category></item><item><title><![CDATA[【Python_036】算法 | 快速排序]]></title><link>https://blog.youkuaiyun.com/haley_yuen/article/details/113783697</link><guid>https://blog.youkuaiyun.com/haley_yuen/article/details/113783697</guid><author>haley_yuen</author><pubDate>Wed, 10 Feb 2021 16:52:43 +0800</pubDate><description><![CDATA[上回书说到选择排序，本篇博客介绍快速排序

在介绍选择排序之前，先介绍递归的概念。
递归
递归函数组成部分：

基线条件（函数不再调用自己，从而避免形成无限循环）
递归条件（函数调用自己）

def fact(x):
    if x == 1: #基线条件
        return 1
    else:
        return x*fact(x-1) #递归条件
    
fact(5)

快速排序
思路：


选择数组第一个数为基准（pivot）


依次将数组中的数与基准比较大小，将整个.]]></description><category></category></item><item><title><![CDATA[【Python_035】算法 | 选择排序]]></title><link>https://blog.youkuaiyun.com/haley_yuen/article/details/113771426</link><guid>https://blog.youkuaiyun.com/haley_yuen/article/details/113771426</guid><author>haley_yuen</author><pubDate>Tue, 09 Feb 2021 15:39:17 +0800</pubDate><description><![CDATA[本篇博客介绍选择排序

思路
遍历列表，找到最小 / 最大的元素，放入新列表中。  如此循环，直到旧列表中没有元素为止
代码实现
def findSmallest(arr:list)-&gt;int:
    smallest = arr[0]
    smallest_index = 0
    
    for i in range(1, len(arr)):
        if arr[i]&lt;smallest:
            smallest = arr[i]
          .]]></description><category></category></item><item><title><![CDATA[【Python_034】算法 | 二分法]]></title><link>https://blog.youkuaiyun.com/haley_yuen/article/details/113767246</link><guid>https://blog.youkuaiyun.com/haley_yuen/article/details/113767246</guid><author>haley_yuen</author><pubDate>Tue, 09 Feb 2021 10:40:32 +0800</pubDate><description><![CDATA[本篇博客介绍用Python实现二分法。 算法小白要从开始研究算法， 从二分法入门再好不过。 书籍参考：《算法图解》

概念
二分查找是一种算法，其输入是一个有序的元素列表。
如果要查找的元素包含在列表中，二分查找返回其位置；否则返回null
一般而言，对于包含n个元素的列表，用二分查找最多需要log2n步，而简单查找最多需要n步
代码实现
def binary_search(bucket:list, item:int)-&gt;int:
    low = 0
    high = len(bucket).]]></description><category></category></item><item><title><![CDATA[【Excel_007】利用excel进行线性规划求解]]></title><link>https://blog.youkuaiyun.com/haley_yuen/article/details/112577979</link><guid>https://blog.youkuaiyun.com/haley_yuen/article/details/112577979</guid><author>haley_yuen</author><pubDate>Wed, 13 Jan 2021 17:46:08 +0800</pubDate><description><![CDATA[本篇博客分享利用excel进行线性规划求解。
应用场景： 有一个总和，由一列数字中的某几个数字相加得来，找出具体是哪几个数字

先把线性规划的工具打开
【文件】-【选项】-【加载项】-【转到】
勾选上规划求解加载项。

打开后可在【数据】选项卡中，【分析】面板中找到【规划求解】

源数据
这里简单演示。右边的总和12 是由左边的数字1-5中某几个数字相加而来。我们需要找出是哪几个数字相加

步骤


在空白单元格中输入公式 =SUMPRODUCT(A2:A6,B2:B6)，我这边输在了C1单元格
sump.]]></description><category></category></item><item><title><![CDATA[【Python_033】reset_index 用法 | 清洗mapping表]]></title><link>https://blog.youkuaiyun.com/haley_yuen/article/details/110918869</link><guid>https://blog.youkuaiyun.com/haley_yuen/article/details/110918869</guid><author>haley_yuen</author><pubDate>Wed, 09 Dec 2020 11:27:01 +0800</pubDate><description><![CDATA[本篇介绍dataframe索引用法


索引基本操作

df.columns = [list1] #列索引 aka 字段名
df.index = [list2] #行索引 aka 每行记录索引

#设置索引
df.set_index('col_name')

#重命名索引
df.rename(columns = {'old_name':'new_name'}) #或者是index = dict1


重置索引

#重置索引就是把索引重新作为列使用
df.reset_index(level=None, dr.]]></description><category></category></item><item><title><![CDATA[【Excel_006】利用数据验证创建二级关联下拉菜单]]></title><link>https://blog.youkuaiyun.com/haley_yuen/article/details/110811098</link><guid>https://blog.youkuaiyun.com/haley_yuen/article/details/110811098</guid><author>haley_yuen</author><pubDate>Mon, 07 Dec 2020 12:48:30 +0800</pubDate><description><![CDATA[本篇博客介绍利用数据验证创建二级关联下拉菜单。可达到筛选器/切片器的效果

数据源

步骤

先做大类验证。

选中源数据，Ctrl+G 调出定位窗口，选择【定位条件】，选择【常量】

选择【公式】-【根据所选内容创建】-【首行】

在二级菜单处，选择【数据验证】-【序列】-输入 INDIRECT($F$2)

大功告成




...]]></description><category></category></item><item><title><![CDATA[【Python_032】数据逆透视，melt()用法]]></title><link>https://blog.youkuaiyun.com/haley_yuen/article/details/109315075</link><guid>https://blog.youkuaiyun.com/haley_yuen/article/details/109315075</guid><author>haley_yuen</author><pubDate>Tue, 27 Oct 2020 17:00:11 +0800</pubDate><description><![CDATA[之前介绍了在python中拉数据透视表，pd.pivot_table()函数用法， 本篇博客介绍其逆操作

df
'''
City	2020	2021
上海	100	200
北京	300	400
'''

df.melt(id_vars=['City'], var_name ='Year', value_name='Sales')
'''
City	Year	Sales
0	上海	2020	100
1	北京	2020	300
2	上海	2021	200
3	北京	2021	400
'''

#id_var.]]></description><category></category></item><item><title><![CDATA[【Python_031】查看 | 删除 | 填充缺失值]]></title><link>https://blog.youkuaiyun.com/haley_yuen/article/details/109266631</link><guid>https://blog.youkuaiyun.com/haley_yuen/article/details/109266631</guid><author>haley_yuen</author><pubDate>Sat, 24 Oct 2020 22:05:23 +0800</pubDate><description><![CDATA[拿到一份脏数据时，缺失值的处理是很重要的一个步骤。本篇博客分享如何用Python查看、删除、填充缺失值

查看缺失值：
   df.info()
   df['col_name'].isnull()   #但数据量多时用这条看不清楚...

删除缺失值：
    df.dropna(thresh=len(df)*0.8, axis=1) 
    #thresh参数含义，某行或某列起码有thresh个非NA数。
    #以上表示如某列缺失值超过20%,则删除
    
df.dropna(how='al.]]></description><category></category></item></channel></rss>