Python-pandas

Pandas相关

读写csv文件

1
2
3
4
5
6
7
8
9
10
11
import pandas as pd
# 读取csv文件 默认所有列为使用列
pd.read_csv('D:\\Download\\PythonTest\\4.python学习内容\\1.pandas\\car.csv')
# 也可以指定某一列作为索引列 其他列则作为使用列
pd.read_csv('D:\\Download\\PythonTest\\4.python学习内容\\1.pandas\\car.csv',index_col='Brand')
# 也可以指定使用列,其他的列不展示,默认索引列
pd.read_csv('D:\\Download\\PythonTest\\4.python学习内容\\1.pandas\\car.csv',usecols=['Country','Reliability','Mileage','Type','Weight'])

# 写入csv
csv1 = pd.read_csv('D:\\Download\\PythonTest\\4.python学习内容\\1.pandas\\car.csv')
csv1.to_csv('D:\\Download\\PythonTest\\4.python学习内容\\1.pandas\\car_2.csv')

读写txt文件

1
2
3
4
5
6
7
8
9
10
11
import pandas as pd 
# 读取TXT文本 为表格 默认列分割为空格****
pd.read_table('D:\\Download\\joyful-pandas-master\\data\\my_table_special_sep.txt') # 但列分割为 ||||
pd.read_table('D:\\Download\\joyful-pandas-master\\data\\my_table_special_sep.txt',sep='\|\|\|\|',engine='python')
# sep可以指定列分隔符 需要指定引擎为python
# sep为正则函数 需要对特殊字符进行转义


# 不能将txt文件写入表格,但可以写入csv
TXT= pd.read_table('D:\\Download\\joyful-pandas-master\\data\\my_table_special_sep.txt',sep='\|\|\|\|',engine='python')
TXT.to_csv('D:\\Download\\joyful-pandas-master\\data\\my_table_special_sep.txt',sep = '\t',index=False)

读写excel文件

1
2
3
4
import pandas as pd 
# 读取Excel 可以指定前几行
pd.read_excel('D:\\Download\\PythonTest\\单元格相关操作.xlsx',nrows=3)
# pd.read_excel('D:\\Download\\PythonTest\\4.python学习内容\\1.pandas\\car_2.csv')

数据结构

Series

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
28
29
30
31
32
33
34
35
36
37
38
39
import pandas as pd
# 创建Series
s1 = pd.Series([1,2,3,4,5,6,7,8,9,10])
# index 指定索引
s2 = pd.Series([1,2,3,4,5,6,7,8,9,10],index=['a','b','c','d','e','f','g','h','i','j'])

# 切片访问
s1[0]
s1[1:4]
s1[1:]
s1[:-1]
s1[-1]

# 修改
s1[0] = 100
s1[1:4] = 200
s1[1:] = 300
s1[:-1] = 400
s1[-1] = 500

# 删除
del s1[0]
s1.drop([0,1,2,3,4,5,6,7,8,9])

# 统计
s1.count()
s1.sum()
s1.mean() # 平均值
s1.median() # 中间值
s1.max()
s1.min()
# 统计
# 排序
s1.sort_values()
s1.sort_values(ascending=False)
# 索引
s1.index
# 值
s1.values

dataframe

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 创建dataframe
import pandas as pd
df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]])
# 指定列名
df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]],columns=['a','b','c'])
# 指定索引
df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]],index=['a','b','c'],columns=['a','b','c'])

# 切片访问
df[0:2]
df['a':'c']
df[0:2][['a','c']]

# 修改
df[0:2][['a','c']] = 100

# 删除
del df[0:2][['a','c']]
df.drop([0,1],axis=0)

# 排序
df.sort_values()
df.sort_values(ascending=False)

loc iloc用法

loc是根据列名定位,iloc是根据index定位;

可以访问多行数据,进行切片与使用列表进行切片遵循相同的规则;

1
2
3
4
5
6
7
8
9
import pandas as pd
data = {
'apples': [3, 2, 0, None , 3 ,3],
'oranges': [0, 3, 7, 2, 3 ,3],
'sex': ['m','f','m','f' , 'f' , 'f']
}

purchases = pd.DataFrame(data,index = ['小明','小图','小熊','小马','小马','小马'])
purchases
1
2
3
4
5
# 可以用值及值的列表确定行,确定列(可省);若使用范围确定行或列 则结果为dataframe类型,否则是series类型
purchases.loc['小明'] # series
purchases.loc['小明',:] # series
purchases.loc['小明':'小明',:] # dataframe
purchases.loc[['小明'],:] # dataframe

shape 表示DataFrame的形状(行、列)

1
purchases.shape           # (6,3)

drop_duplicates 删除重复数据

1
2
3
4
5
6
7
print(purchases.shape)
print(purchases)
purchases.drop_duplicates(inplace=True)
print(purchases.shape)
print(purchases)
# 默认会保留重复数据的第一条, keep=False 表示重复数据全部删除
# inplace=True 表示在原数据上操作
1
2
3
4
# DataFrame的 rename()重命名列名
purchases.rename(columns={'apples' : '苹果','oranges':'橘子'},inplace=True )
# 也可以columns指定
purchases.columns=['苹果','橘子']

方法

1
2
3
4
5
6
7
8
9
10
11
12
13
# isnull()方法返回一个DataFrame,其中每个单元格都是True或False,表示该单元格是不是null状态。
purchases.isnull()
purchases.isnull().sum() # sum()用来计算空值个数
purchases.dropna(axis=1) # 删除有空值的该列

# 获取该列中唯一值
purchases['apples'].unique()

# 非空值的个数
purchases['apples'].nunique()

# 可以获得该列唯一值及对应的频次
purchases['apples'].value_counts()

fillna()补充空值

1
2
3
4
5
6
apple = purchases['apples']
avg = apple.mean()
print(avg)
# 用该列的均值 代替空值
purchases.fillna(avg, inplace=True)
purchases

isin() 传入一个列表,筛选所选字段符合条件的记录

1
purchases.loc[purchases.apples.isin([2,3])]

统计

1
2
3
purchases['apples'].describe()
purchases['apples'].value_counts() # 统计各个值出现的次数
purchases['apples'].count()

排序

1
2
purchases.sort_values(by='',ascending=True,axis=0,na_position='last')
purchases.sort_values(by='apples',ascending=False,na_position='last')

针对series排序

1
2
3
series = purchases['apples']
series
series.sort_values(ascending=False)

可视化

1
2
3
4
5
# DataFrame.plot(kind='line', x=None, y=None, ax=None, subplots=False, layout=None, title=None, grid=True, legend=True, ...)
import matplotlib.pyplot as plt

plt = purchases.plot(kind = 'line')
plt
1
2
3
4
5
6
7
8
import pandas as pd
import matplotlib.pyplot as plt

pokemon_csv = pd.read_csv('D:\\Download\\joyful-pandas-master\\data\\pokemon.csv')
pokemon = pd.DataFrame(pokemon_csv)
mean = pokemon.groupby('Type 1')[['Attack','Defense']].mean()
plt = mean.plot(kind = 'line')
plt.set_yticks(range(0,pokemon['Defense'].max()+1,20))

博客搭建

HEXO 博客搭建

安装 nodejs

安装 git

注册 GitHub

注册 vercel

安装 hexo

分离测试环境

编写文章

首先在个人git中创建一个项目用来存放blog用到的文章、配置资源等内容;

创建两个分支一个作为开发用,一个作为生产环境用,vercel中可以看到每次对项目的调整是否部署完成

hexo的配置文件:

package.json 文件,用来存放hexo的依赖包;
config.yml 文件,用来存放hexo的配置信息;
posts 文件夹,用来存放hexo的文章;
source文件夹,用来存放hexo的资源文件;
scaffolds文件夹,用来存放hexo的模板文件;
themes文件夹,用来存放hexo的主题文件;
node_modules文件夹,用来存放hexo的依赖包;
public文件夹,用来存放hexo的资源文件;
scripts文件夹,用来存放hexo的脚本文件;
source文件夹,用来存放hexo的资源文件;

申请域名:

1. 进入域名解析页面,点击添加记录;
2. 记录类型选择CNAME;
3. 主机记录填写www;
4. 记录值填写你的域名;
5. 点击确定;
6. 等待域名解析生效;
7. 进入vercel的域名管理页面,点击添加域名;
8. 输入域名,点击添加;
9. 等待域名解析生效;

申请ssl证书:

1. 进入vercel的ssl证书管理页面,点击添加证书;
2. 选择自定义证书;
3. 输入域名;
4. 选择证书类型,选择自定义证书;
5. 选择证书内容,选择上传证书;
6. 等待证书生成;
7. 等待证书生效;

部署hexo:

1. 进入vercel的部署管理页面,点击添加部署;
2. 输入项目名称,选择项目分支,选择部署脚本,选择部署环境,点击添加;
3. 等待部署完成;
4. 进入vercel的域名管理页面,点击添加域名;
5. 输入域名,点击添加;
6. 等待域名解析生效;

部署vercel:

1. 进入vercel的域名管理页面,点击添加域名;
2. 输入域名,点击添加;
3. 等待域名解析生效;

cloudflare:

1. 进入cloudflare的域名管理页面,点击添加域名;
2. 输入域名,点击添加;
   1. 添加A记录,记录值填写vercel的域名;
   2. 添加CNAME记录,主机记录填写www,记录值填写vercel的域名;
3. 等待域名解析生效;