qypx の blog

机会是留给有准备的人的.

  • 更改当前路径
1
2
import os
os.chdir("E:/machine learning")
  • 获取当前路径
1
2
import os
os.getcwd()

1. 创建dataframe

  • 法一
1
dat = pd.DataFrame({'id':[1,2,3], 'string': ['a', 'b','c']})
  • 法二(若已有现成的list)
1
2
3
dat = pd.DataFrame([n_clusters_start, score], columns = ["分类数", "得分"])
# 或
dat = pd.DataFrame({"分类数": n_clusters_start, "得分": score})

例:

1
2
3
4
5
6
7
exclamationCount = lambda text: sum([1 for x in text if x == '!'])
EC = tweet.apply(lambda x:exclamationCount(x))
EC = EC.tolist()
questionMarkCount = lambda text: sum([1 for x in text if x == '?'])
QC = tweet.apply(lambda x:questionMarkCount(x))
QC = QC.tolist()
dat = pd.DataFrame({'EC':EC,'QC':QC})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
eachLetterCount = lambda text,letter: sum([1 for x in text.lower() if x == letter])

FList = []
pattern = 'abcdefghijklmnopqrstuvwxyz'
j=0
for i in pattern:
F = tweet.apply(lambda x:eachLetterCount(x,i))
F = F.tolist()
FList.append(F)

res = pd.DataFrame(FList)
res = res.transpose()

pattern = 'abcdefghijklmnopqrstuvwxyz'
name = []
for i in pattern:
name.append("freqOf " + i)
res.columns = name
结果
阅读全文 »

一、csv文件

1. 读取
1
2
3
import pandas as pd
train = pd.read_csv("Google_Stock_Price_Train.csv")
train.head()

1594120531625

若文件中无列表头,需设定header = None,否则第一行会被识别为标题(如下图)

1594120744906

1
2
3
4
import pandas as pd
data = pd.read_csv("dataset.csv", header=None)
data.head()
#data.columns = ['date','open','high','low','close','volume']

1594120675413

或者用names指定需要的列表头

1
2
import pandas as pd
data = pd.read_csv('dataset.csv', names = ['date','open','high','low','close','volume'])

另:关于读取csv文件,报错:

参考 https://www.cnblogs.com/huangchenggener/p/10983812.html

1
'utf-8' codec can't decode byte 0xd4 in position 0: invalid continuation byte

法一:csv文件的保存格式改为 "CSV UTF-8 (逗号分割) (*.csv)"

法二:pd.read_csv()中加上编码方式:

1
pd.read_csv("xxx.csv", encoding='gbk')
阅读全文 »

(本文参考Markdown Tutorial)

1. 加粗与斜体

  • 斜体:在文本两侧加上一个星号或一个下划线,例如:
1
_unknown_或*unkown*

效果如下:unknown

  • 加粗:在文本两侧加上两个星号或两个下划线, 例如:
1
__unknown__或**unknown** 

效果如下:unknown

  • 注:斜体和加粗可以一起用,例如:
1
**_of course_**

效果如下:of course

2.标题(Headers)

在前面加#号, 一共有六级标题。一级标题为在前面加一个#号(# 一级标题),二级标题为在前面加两个#号(## 二级标题)。

1
2
3
4
5
6
7
# Header one
## Header two
### Header three
#### Header four
##### Header five
###### Header six
plain text
注:#号与文本之间有一个空格。

效果如下:

img

3.链接

  • inline link

语法如下:

1
[Visit GitHub!](www.github.com)

Visit GitHub!

再比如:

1
[You're **really, really** going to see this.](www.dailykitten.com)

You're really, really going to see this.

  • reference link

语法如下:

1
2
3
4
5
6
7
Do you want to [see something fun][a fun place]?  

Well, I have [a website for you][another fun place]!

[a fun place]: www.zombo.com

[another fun place]: www.stumbleupon.com

效果如下:
Do you want to see something fun?

Well, I have a website for you!

一般可将链接地址写在Markdown文件的最后。使用refrence的好处是如果有许多链接都是指向一个地方,那么需要更改的时候只需要修改一次就行了。

另外如果直接粘贴链接,有可能只是显示为文本没有显示为超链接,例如 https://daringfireball.net/projects/markdown 。可以在链接前后加上<>,例如:<https://daringfireball.net/projects/markdown/>,效果:https://daringfireball.net/projects/markdown/

4.图片

  • inline link

插入图片和插入链接类似,语法如下:

1
![A pretty tiger](https://upload.wikimedia.org/wikipedia/commons/5/56/Tiger.50.jpg)
阅读全文 »

  • shift+enter: 运行代码块

  • shift+tab: show the documentation pop up for the method

  • Esc+m: markdown语句

  • jupyter notebook中reload模块:

    参考 https://blog.csdn.net/ybdesire/article/details/86709727

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
      #对于 python2.x
    import some_module
    reload(some_module)

    #对于 Python 3.2 and 3.3:
    import some_module
    import importlib
    importlib.reload(some_module)

    #对于python3.4+:
    import some_module
    import imp
    imp.reload(some_module)

    #例:修改了xgboost文件夹下core.py中的代码,重新加载:
    importlib.reload(xgboost.core)

1. List

Lists are mutable.

1
2
3
4
5
6
7
8
9
amazon_cart = [
'notebooks',
'sunglasses',
'toys'
]

amazon_cart[0]='laptop'
print(amazon_cart)
# ['laptop', 'sunglasses', 'toys']

1.1 常见操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
>>>x = [1,2,3,4,5,6]
>>>print(x)
[1,2,3]

# 切片操作
>>>x[:3]
[1,2,3]
>>>x[3:]
[4,5,6]
>>>x[-2:]
[5,6]

# extend
>>>x.extend([7,8])
>>>x
[1,2,3,4,5,6,7,8]

# append
>>>x.append(9)
>>>x
[1,2,3,4,5,6,7,8,9]

>>y=[10,11,12]
>>>listOfLists=[x,y]
>>>listiOfLists
[[1,2,3,4,5,6,7,8,9],[10,11,12]]

阅读全文 »

缩进是 Python的灵魂

关于 Python 的教程可参考廖雪峰的网站
https://www.liaoxuefeng.com/wiki/1016959663602400

1. 逻辑运算符

逻辑运算符
1
2
3
4
5
df[(df['id']>=1) & (df['id']<=2)]

# 以上写法等价于:
df.query('id>=1 & id<=2')
# (https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html)

2. 比较操作符

>, <, >=, <=, ==, !=

pandas进行条件筛选和组合筛选

参考 https://www.cnblogs.com/qxh-beijing2016/p/15499009.html

1
2
3
4
5
6
7
8
df = pd.DataFrame({'A':[100, 200, 300, 400, 500],'B':['a', 'b', 'c', 'd', 'e'],'C':[1, 2, 3, 4, 5]})

A B C
0 100 a 1
1 200 b 2
2 300 c 3
3 400 d 4
4 500 e 5

(1)找出df中A列值为100、200、300的所有数据

1
2
3
4
5
6
num_list = [100, 200, 300]
df[df.A.isin(num_list)] #筛选出A列值在num列表的数据条
A B C
0 100 a 1
1 200 b 2
2 300 c 3

(2)找出df中A列值为100且B列值为‘a’的所有数据

1
2
3
4
5
6
df[(df.A==100)&(df.B=='a')]
A B C
0 100 a 1

也可写作:
df.where((df.A==100)&(df.B=='a'))

(3)找出df中A列值为100或B列值为‘b’的所有数据

1
2
3
4
df[(df.A==100)|(df.B=='b')]
A B C
0 100 a 1
1 200 b 2

注:多条件筛选的时候,必须加括号'()'

阅读全文 »
0%