本文总结了一些常用的python用法,会持续更新!相关参考链接已经放在对应的部分,如有侵权请联系删除,感谢~
一.入门
(一)基础类:
1.计算:
//取整数
%取余数
统计数量:
len(set(data))
2.print(%用法和format用法):
python print(%用法和format用法)_print(%)_wjqhit的博客-CSDN博客
3.字符串
(1)字符串匹配:
判断00开头的股票代码:
def get_symbol(security): if security[0] == '6': return security + '.SH' elif security[0:2] == '00': return security + '.SZ' elif security[0:2] == '30': return security + '.SZ' else: return 'market_other'
(2)字符串转换为变量名:
【Python】如何将字符串作为变量名_python字符串变成变量_兔子爱读书的博客-CSDN博客
4.函数
(1)单输入多输出函数,返回对象为tuple
def fun(x): return f1(x),f2(x),f3(x),f4(x) type(fun) # function a = pd.Series([1,2,3,4,5,6]) type(fun(a)) # tuple
(2)变量名、函数注释
Python中变量名后加冒号“:”以及函数后面的箭头“->”含义_python -> _Dust_Evc的博客-CSDN博客
5.排序
对list排序
降序a.sort(reverse = True)
升序a.sort(reverse = False)(默认情况)
sort ()与 sorted() 区别:
1.sort 是应用在 list 上的方法,属于列表的成员方法,sorted 可以对所有可迭代的对象进行排序操作。
2.list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
3.sort使用方法为ls.sort(),而sorted使用方法为sorted(ls)
6.类Class
Python类的定义和使用_python 类_ζ小菜鸡的博客-CSDN博客
7.包管理
python安装指定版本的包_P@ssW0rd的博客-CSDN博客
安装特定版本的包
pip install pandas==0.24
使用清华源
pip install pandas==0.24 -i https://pypi.tuna.tsinghua.edu.cn/simple
8.round函数
可用于四舍五入
round(1.41401,3) # 1.414
9.分位数
# numpy 10,50,90分位数 np.percentile(data, [10, 50, 90]) # pandas 10,50,90分位数 data['col'].quantile([0.1,0.5,0.9])
python中numpy, pandas, pyspark计算分位数的方法汇总
10.相关系数
np.corrcoef(series1,series2)#含有nan值时会输出nan series1.corr(series2)#可以含nan值
(二)时间类:
1.strftime函数用法:
Python关于strftime函数详细解析 附实战代码_strftime函数python_码农研究僧的博客-CSDN博客
2.strptime函数用法:
python中strftime和strptime有什么区别 - 编程语言 - 亿速云
(三)画图类:
1.直方图
data = np.random.normal(170, 10, 250) plt.hist(data) plt.show()
(四)报错:
Python报错:AttributeError_逸凌Time的博客-CSDN博客
构建pd.DataFrame时索引报错
已解决ValueError: If using all scalar values, you must pass an index_袁袁袁袁满的博客-CSDN博客
A value is trying to be set on a copy of a slice from a DataFrame
Python填坑日记:如何解决“A value is trying to be set on a copy of a slice from a DataFrame ”的问题
二.Numpy
ndarray、series、dataframe互相转化
python的ndarray、series和dataframe类型转化_series转化为ndarray_酸奶奶昔的博客-CSDN博客
(一)np.array
1.创建时定义数据类型
创建np.array可以定义数据类型
data = np.array([1,2,3,4] , dtype = object)
(二)随机数
numpy产生随机数的常用方法总结_numpy生成随机数_科特君的博客-CSDN博客
1. 0-1均匀分布
np.random.rand(d0, d1, …, dn)
其中d0, d1, …, dn表示形状,如:
np.random.rand(3,2)
or
numpy.random.random(size=None)
作用: 返回从[0, 1)之间均匀抽样的数组,size指定形状。
参数:
size: int型或int型的元组,如果不提供则返回一个服从该分布的随机数
返回值: float型或者float型的ndarray对象
numpy.random.random((3,2))
以上两种方法只是参数不同
2.一般均匀分布
np.random.uniform(low=0.0, high=1.0, size=None)
low,high表示均匀分布的区间端点,size为int型或者int型的元组,表示形状,如:
np.random.uniform(1, 10, (3, 2))
3.离散均匀分布
np.random.randint(low, high=None, size=None, dtype=int)
作用: 返回一个在区间[low, high)中离散均匀抽样的数组,size指定形状,dtype指定数据类型。
参数:
low, high: int型,指定抽样区间[low, high)。
size: int型或int型的元组,指定形状。
dypte: 可选参数,指定数据类型,比如int,int64等,默认是np.int。
返回值: 如果指定了size,则返回一个int型的ndarray对象,否则返回一个服从该分布的int型随机数。
4.标准正态分布
np.random.randn(d0, d1, …, dn)
d0, d1, …, dn表示形状
5.一般正态分布
np.random.normal(loc=0.0, scale=1.0, size=None)
loc表示均值,scale表示标准差,size为int型或者int型的元组,表示形状,如:
np.random.normal(0, 1, (3, 2))
6.从给定的一维数组中生成一个随机样本
np.random.choice(a, size=None, replace=True, p=None)
参数:
a: 1维数组或int。如果是ndarray,则从其元素中生成一个随机样本。如果是一个int型,则生成的随机样本就是np.arange(a)。
size: int型或者int型的元组,指定了数组的形状。如果不提供size,在这种情况下将返回单个值。
replace: 布尔值,可选。样品是否有更换
p: 一维数组类,可选。与a中每个条目相关的概率。如果没有给出,样本假设a中所有条目为均匀分布。
返回值: 返回随机项。
(三)时间
时间日期(datetime64)和时间增量(datedelta64)_从零开始20220316的博客-CSDN博客
三.Pandas
没有数据时构造数据
(一)公共方法:
常用设置
好习惯!pandas 8 个常用的 option 设置_Python数据之道的博客-CSDN博客
Pandas数据挖掘与分析时的常用方法_None_output_df
1.len()方法
求series的长度或df的行数
2.loc与iloc方法:
series与df都可以用
loc必须跟index对应,iloc跟位置对应
3.shift方法:
只有pd.Series和pd.DataFrame才有shift方法,shift(1)表示向下移动1单位
4.head方法:
?pd.core.series.Series.head
head(2)取前两行
5.MultiIndex多重索引
MultiIndex DataFrame多重索引的引用方法_dataframe multiindex_Jiewi_W的博客-CSDN博客
6.nunique()方法
series.nunique()返回series对象所有不重复值的个数
dataframe.nunique()返回每一列不重复值的个数,返回类型为series
7.窗口函数
(二)pd.Series
Series是带标签的一维数组,可存储整数、浮点数、字符串、Python对象等类型的数据
1.pd.Series用法:(包括声明方法,index,name等参数)
python函数:pd.Series()_小小白2333的博客-CSDN博客
2.pd.Series修改索引:
series.reset_index()
or
series.reset_index(inplace = True, drop = True)(改变索引需要把之前的丢了,否则之前的索引会变成新的列)
3.pd.Series修改列名:
series.rename('新名字', inplace = True)
4.pd.Series转化为list:
series.tolist()
or
series.to_list()
5.pd.Series转化为pd.DataFrame:
(1)pd.DataFrame(pd.Series):
(2)pd.Series.to_frame()
6.unique()方法和nunique()方法:
series.unique()返回series对象所有不重复的值
series.nunique()返回series对象所有不重复值的个数
7.apply方法:
将一个函数作用于Series的每一个元素上,并返回一个新的Series。
详解pandas.Series.apply()(应用函数到序列)函数使用方法 - Python技术站
s1 = pd.Series(['1','2','3','4','5']) s2 = s1.apply(lambda x: int(x) + 1) print(s2)
8.数据分箱:
(三)pd.DataFrame
1.index索引
(1)重设索引:
df.reset_index(inplace=False , drop=False) drop默认False
(2)设置某一列为索引:
df.set_index('column_name' , inplace=False , drop=True) drop默认Ture
drop针对被操作的索引或列,为True表示不保留
(3)MultiIndex多重索引:
设置:df.set_index(['column_name_1','column_name_2'] , inplace=False , drop=True) drop默认Ture
MultiIndex DataFrame多重索引的引用方法_dataframe multiindex_Jiewi_W的博客-CSDN博客
多重索引有重复时不能groupby,需要再把不完全相同的一列设为index后,进行groupby
2.column列
(1)pd.DataFrame修改列名:
Pandas中对DataFrame列名进行重命名_dataframe列名重命名_铁盒薄荷糖的博客-CSDN博客
df.rename(columns = {原列名:新列名} , inplace = True)
Dataframe修改列名_Zze_Cqupt的博客-CSDN博客
(2)查看某个列名对应第几列
df.columns.tolist().index("column_name")
or
df.columns.to_list().index("column_name")
3.groupby
groupby函数用法:
Python groupby函数图文详解_python_脚本之家
Python pandas.core.groupby.GroupBy.mean用法及代码示例 - 纯净天空
python中groupby函数详解(非常容易懂) - The-Chosen-One - 博客园
分组聚合运算
利用Python进行数据分析:数据聚合与分组运算(基于DataFrame)_python dataframe 聚合_黑洞拿铁的博客-CSDN博客
【DS with Python】DataFrame的合并、分组聚合与数据透视表_dataframe分组聚合_Mart_inn的博客-CSDN博客
(1)unique方法:
取出不同的值,存为np.ndarray
df.groupby('code')['lastPx'].unique()
(2)agg方法:
可以取多个函数进行选择
df.groupby('code')['lastPx'].agg(function_1,function_2)
df.groupby('code')[['column1','column2']].agg(function_1,function_2)
python pandas中的agg函数用法_python_脚本之家
(3)apply调用多个函数
只能通过自定义f实现,无法像agg一样聚合
关于python:将多个函数应用于多个groupby列 | 码农家园
注意!有groupby、rolling的apply和没有groupby、rolling的apply是两个函数!别混淆
series.apply(np.mean)不能求series的均值,只会让单个元素各自为一组
(4)apply和transform的比较:
python中apply和transform的比较 - python基础教程
apply和transform的不同_apply和transform的区别_weixin_42842108的博客-CSDN博客
python中apply和transform有什么区别 | Fiime分享
(5)map方法:
pandas 常用函数_df.map_塞上江南o的博客-CSDN博客
四.os
os.path.normpath()方法:
用于规范化指定的路径。在路径规范化过程中,所有冗余分隔符和up-level引用均折叠。
os.path.normpath()_Wanderer001的博客-CSDN博客
os.path.basename()方法:
作用是获取路径中的文件名或目录名。当我们需要获取一个文件或目录的名称时,可以使用该方法。
该方法的语法如下:
os.path.basename(path)
其中,path 表示要获取名称的路径。该方法返回路径中的最后一个部分,即文件名或目录名。
在 Python 中 os.path.basename() 方法的作用是什么
os.makedirs()方法
用于递归创建目录。
Python os.makedirs() 方法 | 菜鸟教程
五.scipy
(一)SciPy库介绍:
SciPy是一个高级的科学计算库。
SciPy包含线性代数,优化,集成和统计的模块,SciPy包包含致力于科学计算中常见问题的各个工具箱。
(二)SciPy库功能:
主要功能是建立在NumPy上,从而它的数组大量的使用了NumPy的。
它的不同子模块相应于不同的应用。像插值,积分,优化,图像处理,特殊函数等等。
(三)实现原理:
它通过其特定子模块提供有效的数值例程,并作为数字积分、优化和其他例程。
SciPy的所有子模块中的功能都有详细的说明 ——又是一个SciPy非常有帮助的点。
六.glob库
glob.glob(path)
参数:
path:文件路径匹配规则,可以是绝对路径,也可以是相对路径
返回:
所有匹配的文件路径列表