【python学习】pandas入门基础方法

【python学习】pandas入门基础方法,第1张

一、创建Series对象的几种方法

import pandas as pd 
#传入一个列表 
S1=pd.Series(["a","b","c","d"]) 
#指定索引 
S2=pd.Series([1,2,3,4],index=["a","b","c","d"]) 
#传入一个字典 
S3=pd.Series({"a":1,"b":2,"c":3,"d":4}) 
#获取Series的索引和值 
S1.index #索引 
S1.values #值

二、创建DataFrame对象的几种方法

import pandas as pd 
#传入一个列表 
df1 = pd.DataFrame(["a", "b", "c", "d"]) 
#传入一个嵌套列表 
df2 = pd.DataFrame([["a", "A"], ["b", "B"], ["c", "C"], ["d", "D"]]) 
#指定行、列索引 
df3 = pd.DataFrame([["a", "A"], ["b", "B"], ["c", "C"], ["d", "D"]], columns = ["小写", "大写"], index = ["一", "二", "三", "四"]) 
#传入一个字典 
data = {"小写" : ["a", "b", "c", "d"], "大写" : ["A", "B", "C", "D"]} df4 = pd.DataFrame(data) 
#获取DataFrame的行、列索引 df.columns #行索引 df.index #列索引

三、Pandas的常用方法

一、Series对象的几种方法
import pandas as pd
#传入一个列表
S1=pd.Series(["a","b","c","d"])

#指定索引
S2=pd.Series([1,2,3,4],index=["a","b","c","d"])

#传入一个字典
S3=pd.Series({"a":1,"b":2,"c":3,"d":4})

#获取Series的索引和值
S1.index     #索引
S1.values    #值
二、DataFrame对象的几种方法
import pandas as pd
#传入一个列表
df1 = pd.DataFrame(["a", "b", "c", "d"])

#传入一个嵌套列表
df2 = pd.DataFrame([["a", "A"], ["b", "B"], ["c", "C"], ["d", "D"]])

#指定行、列索引
df3 = pd.DataFrame([["a", "A"], ["b", "B"], ["c", "C"], ["d", "D"]], columns = ["小写", "大写"], index = ["一", "二", "三", "四"])

#传入一个字典
data = {"小写" : ["a", "b", "c", "d"], "大写" : ["A", "B", "C", "D"]}
df4 = pd.DataFrame(data)

#获取DataFrame的行、列索引
df.columns   #行索引
df.index     #列索引
三、Pandas的常用方法
df.head()    #默认展示前5行,hend(2)表示展示前2行
df.shape()    #获取表的行、列数
df.info()    #查看数据表中的数据类型
df.describe()    #获取数值分布情况

#缺失值判断处理
df.info()    #查看数据表中的数据类型,可以用来判断数据的缺失情况
df.isnull()    #判断哪个值是缺失值,判断整个表,不是判断某一个
df.dropna()    #默认删除含有缺失值的行,只要该行有缺失值,就整行删除
df.dropna(how = 'all')    #只删除所有字段都为空的行
df.fillna(0)    #对数据表中的所有空值填充为0
df.fillna({"性别" : "男", "年龄" : "30"})    #传入一个字典,对性别、年龄字段的空值填充

#重复值判断处理
df.drop_duplicates()    #默认对所有值进行重复值判断,且默认保留第一个(行)值
df.drop_duplicates(subset = '唯一识别码')    #通过"唯一识别码"去重,保留第一个(行)值
df.drop_duplicates(subset = ['客户姓名', '唯一识别码'])  #通过列表中的字段去重
'''通过keep参数自定义删除重复项时保留哪个,值:first(保留第一个),last(保留最后一个值),False(删除所有重复值)'''
df.drop_duplicates(subset = ['客户姓名', '唯一识别码'], keep = 'last')

#异常值判断处理
'''
1、划定不同指标的正常范围
2、绘制箱形图,大于或小于正常值的为异常值
3、如果数据服从正态分布,利用3σ原则(如果一个数值与平均值之间的偏差超过3倍标准差,那么这个值就是异常值)
'''

#数据类型转换
df["唯一识别码"].dtype    #查看唯一识别码这一列的数据类型
df["唯一识别码"].astype("float64")    #转换成float类型

#索引
df.columns = ["订单编号", "客户姓名", "唯一识别码", "成交时间"]    #添加列索引
df.index = [1, 2, 3, 4, 5]    #添加行索引
df.set_index("订单编号")    #重新设置行索引
#重命名索引
df.rename(columns = {"订单编号" : "新订单编号", "客户姓名" : "新客户姓名"}, index = {1 : "一", 2 : "二", 3 : "三", 4 : "四"})
'''
重置索引
level:指定要将层次化索引的第几级别转化为columns,默认为全部索引
drop:指定是否将原索引删除,即不作为一个新的columns,默认是False
inplace:是否修改原数据表
'''
reset_index(level = None, drop = False, inplace = False)     
             
#选择某一列/某几列
#1、传入具体列名
df["订单编号"]    #一列
df[["订单编号", "客户姓名"]]    #多列

#loc是基于行标签和列标签名字进行索引
#2、位置索引,使用iloc方法
df.iloc[:, [0,2]]    #获取第一列和第三列的所有行的数值,逗号前面的部分表示要获取的行
#切片索引
df.iloc[:, 0:3]    #获取第一列到第四列之间的所有行的数据

#选择某一行/某几列
df.loc["一"]    #选择一行
df.loc["一", "二"]    #选择第一行和第二行
df.iloc[0]    #选择第一行
df.iloc[[0,1]]    #选择第一行和第二行
df.iloc[0:3]    #选择第一行到第三行
df[df["年龄"]<200]    #选择年龄小于200的数据
#同时选择行、列
#1、普通索引+普通索引
df.loc[["一", "二"], ["订单编号", "唯一识别码"]]
#2、位置索引+位置索引
df.iloc[[0,1], [0,2]]
#3、布尔索引+普通索引
df[df["年龄"]<200][["订单编号", "年龄"]]
#4、切片索引+切片索引
df.iloc[0:3, 1:3]
#5、切片索引+普通索引
df.ix[0:3, ["客户姓名", "唯一识别码"]]

#对某个值进行替换 replace()
df["年龄"].replace(240, 33, inplace = True)    #将240替换为33,不修改原来的表
df.replace(np.NaN, 0)    #np.NaN是对缺失值的一种表示方法,对全表中的缺失值进行替换,相当于fillna()
df.replace([240, 260, 280], 33)    #多对一替换
df.replace({240:32, 260:33, 280:34})    #多对多替换

#按照coll列进行排序,ascending默认为True升序,False为降序;na_position表示对缺失值的显示位置进行设置,默认参数值为last,表示将缺失值显示在最后。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
 df.sort_values(by = ["coll"], ascending =  False, na_position = "first")
 df.sort_values(by = ["coll1", "coll2"], ascending = [True, False])
 
 #数值排名
 '''
 rank(method, ascending)
 1、method参数用来指明待排列值有重复值时的处理情况,
 average:返回重复值的平均值;
 first:按值在所有的待排列数据中出现的先后顺序排名;
 min:返回重复值的最佳排名
 max:返回重复值的最大排名
 2、ascending参数默认为升序排序,如果值为False则为降序排序
'''
df["销售ID"].rank(method="average", ascending = "False")

#数值删除,使用drop()方法,通过设置axis的值来判断删除行还是删除列
df.drop(["销售ID", "成交时间"], axis = 1)    #axis=1表示删除列,如果=0就表示删除行
df.drop(df.columns[[4, 5]], axis = 1)
df.drop(df.index[[0, 1]],axis = 0)      #axis=0表示删除行
df.drop(columns = ["销售ID", "成交时间"])    #使用这种方式删除列不需要设置axis值
df.drop(index = ["0a", "1b"])      #使用这种方式删除行不需要设置axis值
df[df["年龄"]<40]    #删除特定行,把与特定值相反的值筛选出来从而实现删除特定行

#数值计数,使用value_counts()方法
#通过设置normalize参数可以显示不同值出现的占比,默认为False
df["销售ID"]value_counts()
df["销售ID"].value_counts(normalize = True, sort = False)

#获取唯一值,可以通过drop_duplicates()方法进行重复值判断,也可以利用unique()方法
df["销售ID"] =  unique()

#数值查找,使用isin()查看数据表中是否包含某个值
df.["年龄"].isin([31, 21])    #查找年龄列是否存在31、21两个值
df.isin(["A2",31])    #在全表查找是否存在A2、31两个值

#区间切分,切分结果是左开右闭的区间
#1、使用cut()方法,该方法参数bins用来指明切分区间
pd.cut(df["年龄"], bins = [0,3,6,10])
#2、使用qcut()方法不需要事先指明切分区间,只需要指明切分个数
pd.qcut(df["年龄"], 3)
#插入新列,只能通过拼接获取新表
#插入新列,使用insert()方法,指明要插入的位置、插入后新列的列名,插入的数据
df.insert(2, "商品类别", ["cat01", "cat02", "cat03", "cat04", "cat05"])
df["商品类别"] = ["cat01", "cat02", "cat03", "cat04", "cat05"]

#行列转换,使用.T方法
df.T
df.T.T    #对表转置后再转置

#索引重塑,就是将原来的索引进行重新构造
df.stack()    #把数据从表格型数据转换到树形数据的过程叫重塑
df.unstack()    #把树形数据转换到表格型数据

#宽表转换为长表
#1、使用stack()方法,现将不转换的列设置成索引,然后调用stack()方法,再进行索引重置
df.set_index(["Company", "Name"]).stack().reset_index()
#2、使用melt()方法,id_vars参数用于指明宽表转换到长表时保持不变的列,var_name参数表示原来的列索引转化为"行索引"以后对应的列名,value_name表示新索引对应的值的列名
df.melt(id_vars = ["Company", "Name"], var_name = "Year", value_name = "Sale")

#长表转换为宽表,数据透视表
df.pivot_table(index = ["Company", "Name"], columns = "Year", values = "Sale")

#apply()和applymap(),执行相同的函数操作
df["C1"].apply(lambda x:x+1)    #对某一列或某一行中的元素执行相同的函数操作
df.applymap(lambda x:x+1)    #对整个表格中的每一个元素执行相同的函数操作

#汇总运算,统计非空值count()、求和sum()、求平均值mean()、求最大值max()、求最小值min()、求中位数median()、求众数mode()、求方差var()、求标准差std(),以上函数具体用法大体一致,如下:
df.count()    #返回数据表中每列的非空值的个数
df["C1"].count()    #返回指定列的非空值的个数
df.coutn(axis = 1)    #返回数据表中每行的非空值的个数

#quantile求分位数
df.quantile(0.25)    #求每一列四分之一分位数
df.quantile(0.25, axis = 1)    #求每一行四分之一分位数

#相关性运算
df["col1"].corr(df["col2"])    #求col1和col2之间的相关性
df.corr()    #求整个表的两两之间的相关性

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/737652.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)

保存