Python
- 一、基础知识
-
- 1.import … as … 与from … import … 的区别
- 2.Python 中 type、 dtype、 astype 用法区别
- 3.字符串相关操作
- 4.Rstudio如何快速重启
- 5.获取工作路径
- 6.py转pynb
- 7.显示所有的数据
- 8.whl包、tar包、tar.gz包的区别
- 9.apply与进度条的结合
- 二、jupyter小插件
-
- 1.查看内存使用情况
- 2.安装扩展插件
- 三、Pandas
-
- 1.数据查看
- 2.转置
- 3.删除
- 4.排序
- 5.删除重复值
- 6.列名重命名
- 7.行名重命名
- 8.横向拼接
- 9.纵向拼接(类似于sql中的join)
- 10.数据转换
- 11.dataframe表格打印输出对齐
- 12.将一列中所有重复的值都设置为空白单元格
- 13.填充空白单元格
- 14.获取dateframe最后一行结果(不需要知道有多少行)
- 15.统计基础功能
- 16.数据分组
- 17.重置索引
- 18.返回某一列最大值对应索引
- 19.dataframe的行数和列数
- 20.读取与写入
- 21.转化为dataframe
- 22.merge模糊匹配
- 23.将单元格中的多个数据拆分为多行数据
- 24.dataframe转dict
- 四、numpy
-
- 1.在range中使用小数
- 2.npy文件的创建和读取
- 3.计算分位数
- 五、matplotlib.pyplot
-
- 1.设置画布大小
- 2.中文正常显示
- 3.多个子图
- 4.折线图(最基础)
- 5.散点图
- 6.柱状图
- 7.饼图
- 8.改变线和点的颜色和形状
- 9.添加横纵坐标标签
- 10.设置文字说明
- 11.坐标轴设置
- 12.添加图例
- 13.保存图片
- 六、Docx
-
- 1.页边距设置
- 2.插入段落、文字、表格、分页等
- 3.行转列
- 4.设置标题中文字体
- 5.表格设置
- 6.段落设置
- 7.字体设置
- 8.输出成docx
- 七、sklearn
-
- 1.归一化与反归一化
- 八、tensorflow
- 九、keras
- 十、一些好用的包
-
- 1.copy
- 2.BytesIO
- 3.robjects
一、基础知识
1.import … as … 与from … import … 的区别
- import是python提供的用于导入模块的机制,导入是的整个模块的内容
- from import 用于导入一个模块中的某一个部分,比如一个函数或者一个类等。
2.Python 中 type、 dtype、 astype 用法区别
函数 | 说明 | 返回参数类型 |
---|---|---|
type(object) | 返回object对象的类型 | 包括数据类型(int、float)和数据结构类型(list、dict、numpy.ndarray) |
arr.dtype | 返回数组中的数据元素类型 | 如:int64、float64 |
arr.astype(dtype) | 修改数组中数据元素类型 | 返回参数类型由dtype决定 |
- type()属于python内置函数,可返回参数对象的数据类型或数据结构类型
- dtype出自numpy.dtype,用于查看数组的数据元素类型时需用 arr.dtype 属性的形式
- astype出自numpy.chararray.astype,改变arr中所有数据元素的类型为指定的dtype格式,返回一个修改后的arr。
3.字符串相关操作
- 字符串切割
str[1:5]
- 字符串拼接
','.join(str) # 也可以用于列表、元组、字典
4.Rstudio如何快速重启
ctrl/cmd + shift + F10
5.获取工作路径
import os
os.getcwd() # 获得当前工作目录
os.chdir('') # 更改路径,''里面为更改的路径
6.py转pynb
%load file_name.py
7.显示所有的数据
在用jupyter时我们有时候需要查看所有的数据,这时候需要我们把所有的行和列都输出。
from IPython.display import display
pd.set_option('display.max_columns', None) # 输出所有的列
pd.set_option('display.max_rows', None) # 输出所有的行
8.whl包、tar包、tar.gz包的区别
whl包、tar包、tar.gz包的区别及安装方法
9.apply与进度条的结合
from tqdm import tqdm
tqdm.pandas(desc = 'apply')
df = data.progress_apply(function,axis = 1)
二、jupyter小插件
1.查看内存使用情况
# 安装jupyter-resource-usage
## pip安装与conda安装
pip install jupyter-resource-usage
conda install -c conda-forge jupyter-resource-usage
## 查看jupyter book的版本
jupyter notebook --version
## 若jupyter notebook版本低于5.3,需要手动使其生效
jupyter serverextension enable --py jupyter-resource-usage --sys-prefix
jupyter nbextension install --py jupyter-resource-usage --sys-prefix
jupyter nbextension enable --py jupyter-resource-usage --sys-prefix
2.安装扩展插件
# 安装Jupyter扩展插件
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
三、Pandas
import pandas as pd
from pandas.core.frame import DataFrame
pandas 是python的数据分析库,提供快速、灵活和富有表现力的数据结构,用于数据挖掘和数据分析,同时也提供数据清洗功能,与numpy、matplotlib并称,成为数据分析必学的三个库。Pandas 的主要功能如下。
Pandas 数据结构—DataFrame。DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共同用一个索引)。DataFrame包括index和values。
1.数据查看
df.describe()
2.转置
df.T
3.删除
df.drop([columns],axis = 1,inplace = False)
- axis = 1 删除列,axis = 0删除行
- inplace = True删除后改变原数据,False生成新数据,不改变原数据
4.排序
- 按值排序
df.sort_values(ascending=False, by = columns, axis=0)
- ascending = False:降序排列,True:升序排列
- axis=0按行排序,1按列排序
- 按索引排序
df.sort_index()
- 添加排名
df['rank'] = df[column].rank(method='first', ascending=False).astype('int')
- [method]:‘first’当遇到重复的排名,第一次出现的排名靠前
- [ascending]:False为逆序排列,True为正序排列
5.删除重复值
df.drop_duplicates()
6.列名重命名
- 查看所有列名
df.columns
- 列名重命名
df.rename(columns = {'':''}, inplace = True)
- [inplace]:True修改原数据;False生成新数据,不改变原数据
7.行名重命名
- 查看所有行名
df.index
- 列名重命名
df.rename(index= {'':''}, inplace = True)
- [inplace]:True修改原数据;False生成新数据,不改变原数据
8.横向拼接
pd.concat([a,b],axis = 0)
9.纵向拼接(类似于sql中的join)
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False)
- how:用什么方式进行连接,inner/left/right/outer
- on:连接的键,若两个dataframe键名相同,则用on,不同用left_on/right_on
- left_index/right_index:用索引当做连接键,此时为True
10.数据转换
数据转换一般用map和apply,map主要用于series的转换,apply是series和dataframe都可以。
df.apply(lambda x:function(x),axis =1)
11.dataframe表格打印输出对齐
- print输出
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)
pd.set_option('display.width', 180) # 设置打印宽度(**重要**)
- jupyterNoterbook输出
from IPython.display import display
display(df1)
display(df2)
12.将一列中所有重复的值都设置为空白单元格
import numpy as np
for col in df.columns:df[col][df[col].duplicated()] = np.nan # 也可以用其他想替换的字符,此处为空
13.填充空白单元格
- 判断是否有空值
df[df.isnull()==True].count()
- 填充空白单元格
df.fillna(0) #可以替换成任何想要的字符
14.获取dateframe最后一行结果(不需要知道有多少行)
df.values[-1]
或者
df.iloc[-1]
15.统计基础功能
df.count()
df.min()
df.mean()
df.sum()
df.median()
df.cumsum() # 累计和
df.cumprod() # 累计积
16.数据分组
df.groupby(df[columns]).agg({'':''})
17.重置索引
df.reset_index()
18.返回某一列最大值对应索引
df[column].idxmax()
19.dataframe的行数和列数
df.shape[0] # 返回行数
df.shape[1] # 返回列数
20.读取与写入
df.to_excel # 写入到 excel 文件
pd.read_excel # 读取 excel 文件
21.转化为dataframe
df = pd.DataFrame(data)
22.merge模糊匹配
Pandas实现模糊匹配Merge数据的方法
23.将单元格中的多个数据拆分为多行数据
将单元格中的多个数据拆分为多行数据
24.dataframe转dict
data_dict = dict(zip(data['key'],data['value']))
四、numpy
1.在range中使用小数
import numpy as np
np.arange(0,1,0.1)
2.npy文件的创建和读取
np.save(r'df.npy',df) # 创建npy文件
df= np.load(r'df.npy', allow_pickle=True) # 读取npy文件
3.计算分位数
import numpy as np
np.percentile(data, (25, 50, 75), interpolation='midpoint')
五、matplotlib.pyplot
1.设置画布大小
plt.figure(figsize=(10, 5))
2.中文正常显示
plt.rcParams['font.family'] = 'SimSun' # 解决中文显示问题
plt.rcParams['axes.unicode_minus'] = False # 解决中文显示问题
3.多个子图
plt.subplot(121) # 1行2列,第1个
plt.subplot(122) # 1行2列,第2个
4.折线图(最基础)
plt.plot(x,y)
plt.show()
5.散点图
plt.plot(x,y,'o')
plt.show()
若要与折线图叠加
plt.plot(x,y)
plt.plot(x,y,'o')
plt.show()
6.柱状图
plt.bar(x, y, [label], [align], [alpha], [color], [width],[bottom])
参数说明:
[x, y]:绘制柱状图的数据
[label]:字符串,柱状图的图例名称
[align]:字符串,指定x轴上对其方式,‘center’居中,‘edge’边缘
[alpha]:可用0.8,透明度
[color]:柱状图的填充色,可用RGB
[width]:标识柱状图的宽度,取值在0-1之间,默认为0.8
[bottom]:柱状图底部离横轴的距离,可用于制作堆叠柱状图
7.饼图
plt.pie(x, [explode], [labels], [colors], [autopct], [pctdistance], [labeldistance], [startangle], [radius], [textprops], **kwargs)
参数说明:
x:数组,绘制饼状图的数据。
[explode]:默认值为None的可选参数。若非None,则是和x相同长度的数组,用来指定每部分的离心偏移量。
[labels]:列表,指定每个饼块的名称,默认值None,为可选参数。
[colors]:特定字符或数组,指定饼图的颜色,默认值None,为可选参数。
[autopct]:特定字符,指定饼图中数据标签的显示方式,默认值None,为可选参数。
[pctdistance]:浮点数,指定显示比例距离圆心的距离。默认值0.6,为可选参数。
[labeldistance]:浮点数,指定每个扇形对应标签与圆心的距离,默认值1.1,为可选参数。
[startangle]:浮点数,指定从x轴逆时针旋转饼图的开始角度,默认值None,为可选参数。
[radius]:浮点数,指定饼图的半径,默认值1,为可选参数。
[textprops]:字典,设置文本对象的字典参数,默认值None,为可选参数。
8.改变线和点的颜色和形状
plt.plot(x,y,alpha1,alpha2,alpha3,...[alphan])
Alpha:参数
- 可以是颜色(甚至可以使用RGB)
链接: RGB颜色 - 可以是线型
- 实线 – 虚线 -. 形式即为-. : 细小的虚线
- 可以是点型
s–方形 h–六角形 H–六角形 *–*形 ±-加号 x–x形 d–菱形 D–菱形 p–五角形
9.添加横纵坐标标签
plt.xticks([index + bar_width for index in x], df[column], size)
plt.yticks(size)
10.设置文字说明
plt.text(x, y, [string], [fontsize], [va], [ha])
参数说明:
[x, y]:表示坐标位置
[string]:表示说明文字
[fontsize]:表示字体大小
[va]:垂直对齐方式 ,参数:[ ‘center’ | ‘top’ | ‘bottom’ | ‘baseline’ ]
[ha]:水平对齐方式 ,参数:[‘center’|‘right’|‘left’]
11.坐标轴设置
%matplotlib inline
这是一个魔法函数(Magic Functions)。 官方给出的定义是:IPython有一组预先定义好的所谓的魔法函数(Magic Functions),你可以通过命令行的语法形式来访问它们。 使用%matplotlib命令可以将matplotlib的图表直接嵌入到Notebook之中,或者使用指定的界面库显示图表,它有一个参数指定matplotlib图表的显示方式。 inline表示将图表嵌入到Notebook中。
- 坐标轴负号正常显示
import matplotlib
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文
# 为了坐标轴负号正常显示。matplotlib默认不支持中文,设置中文字体后,负号会显示异常。需要手动将坐标轴负号设为False才能正常显示负号。
matplotlib.rcParams['axes.unicode_minus'] = False
# 添加坐标轴
plt.xlabel('')
plt.ylabel('', [fontsize], [fontname])
- 坐标轴的区间
plt.xlim(x_min,x_max)
plt.ylim(y_min,y_max)
12.添加图例
plt.legend([loc], [fontsize], [ncol])
参数说明:
[loc]:图例在画布中的位置
[ncol]:设置图例分为n列展示
转载:python – matplotlib.legend()函数用法解析
13.保存图片
plt.savefig(path, format='jpg', dpi=3000, bbox_inches='tight')
参数说明:
[path]:图片保存地址,可以保存在本地,也可以保存到BytesIO
[dpi]:设置图片像素,越高像素越大
[format]:设置保存图片类型。比如“png”,“pdf”,“svg”等
[bbox_inches]:只有图形给定部分会被保存。设置为“tight”用以恰当的匹配所保存的图形。
六、Docx
from docx import Document
1.页边距设置
doc = Docunment()
doc.sections[0].left_margin = Inches(1)
doc.sections[0].right_margin = Inches(1)
2.插入段落、文字、表格、分页等
- 插入段落
paragraph = doc.add_paragraph()
- 段落中增加文字
run = paragraph.add_run
- 插入表格
table = doc.add_table(nrow, ncol)
- 插入图片
img = run.add_picturn()
- 插入分页
doc.add_page_break()
3.行转列
from docx.enum.section import WD_ORIENT
document = Document()
section = document.sections[0]
new_width, new_height = section.page_height, section.page_width
section.orientation = WD_ORIENT.LANDSCAPE
section.page_width = new_width
section.page_height = new_height
4.设置标题中文字体
from docx.oxml.ns import qn
from docx.shared import Pt
title = document.add_heading(level=level)
title_run = title.add_run(text)
title_run.font.size = Pt(size) # 设置字体大小,小四对应值为12
title_run.font.name = font # 设置字体类型属性
title_run.element.rPr.rFonts.set(qn('w:eastAsia'), font)
5.表格设置
- 表格类型
table.style = 'Table Grid'
- 表格设置自动调整列宽(默认为真)
table.autofit = True
- 表居中
table.alignment = WD_TABLE_ALIGNMENT.CENTER
- 获取行列对象
row = table.rows[0] # 获取行对象
col = table.columns[0] # 获取列对象
- 获取表格某一行某一列的单元格对象列表
row_cells = table.row_cells(0) # 获取表格一行的单元格对象列表
col_cells = table.column_cells(0) # 获取一列的单元格对象列表
- 设置背景颜色
shading_elm=parse_xml(r'<w:shd {} w : fill = "4682B4"/>'.format(nsdecls('w')))
cell._tc.get_or_add_tcPr().append(shading_elm)
- 单元格对齐
# 垂直对齐方式:'TOP'-0, 'CENTER'-1, 'BOTTOM'-3, 'BOTH'-101
# 水平对齐方式:'LEFT'-0, 'CENTER'-1, 'RIGHT'-2
table1.cell(0, 0).vertical_alignment = WD_ALIGN_VERTICAL.TOP #垂直对齐
table1.cell(0,0).paragraphs[0].alignment=WD_PARAGRAPH_ALIGNMENT.CENTER
- 合并单元格
cell_new = table1.cell(2, 0).merge(table1.cell(2, 1)).merge(table1.cell(2, 2))
6.段落设置
- 居中
paragraph.paragraph_format.alignment =WD_ALIGN_PARAGRAPH.CENTER
- 段前段后间距
gs.paragraph_format.space_before = Pt(24) # 段前间距
gs.paragraph_format.space_after = Pt(24) # 段后间距
- 行间距
gs.paragraph_format.line_spacing = 1.5
- 首行缩进
gs.paragraph_format.first_line_indent = Pt(24)
7.字体设置
- 字体格式
for run in gs.runs:run.font.name = 'Times New Roman' # 设置 run 中的西文字体 run.font.element.rPr.rFonts.set(qn('w:eastAsia'), 'YaHei')run.font.size = Pt(30)run.font.color.rgb = RGBColor(51, 102, 153)run.font.bold = Truerun.wordWrap = 'CJK' # 自动换行
8.输出成docx
doc.save(r'')
七、sklearn
1.归一化与反归一化
from sklearn.preprocessing import MinMaxScaler
min_max_scaler = MinMaxScaler()# 归一化
train_scaler = min_max_scaler.fit_transform(train)# 反归一化
predict = min_max_scaler.inverse_transform(predict_scaler)
八、tensorflow
九、keras
十、一些好用的包
1.copy
import copy
df1 = copy.deepcopy(df) # 对df1的修改不会影响df的值
2.BytesIO
from io import BytesIO
# 可以在内存中读写bytes,生成的图片可以不用导出到本地
jpg_path = BytesIO() # 在内存中取一个位置用于存放svg文件
3.robjects
import rpy2.robjects as robjects
# 可以在python中调用R语言
robjects.r("r_script")
[r_script]:R代码
robjects.r.source("file.r")
[file.r]:R脚本文件