作为标签库,Pandas 对象在 NumPy 数组基础上给予其行列标签,Pandas 中,所有数组特性仍在,Pandas 的数据以 NumPy 数组的方式存储。本篇依旧是根据B站的爆肝杰哥的Python相关系列课程总结而来,同时分享了自己的踩坑记录,在这里感谢大佬的辛苦付出。
v1 = [ 53, 64, 72, 82 ]i= [ '1 号', '2 号', '3 号', '4 号' ]v2 = [ '女', '男', '男', '女' ]i = [ '1 号', '2 号', '3 号', '4 号' ]sr1 = pd.Series(v1,index = i)sr2 = pd.Series(v2,index = i)df = pd.DataFrame({'年龄':sr1,'性别':sr2}) #字典法创建dfarr1 = np.array([[53,'女'],[64,'男'],[72,'男'],[82,'女']]) #设定value数组 i = [ '1 号', '2 号', '3 号', '4 号' ] #设定行标签c = ['年龄','性别'] #设定列标签df1 = pd.DataFrame(arr1,index = i,columns = c) #数组创建法df1df1.loc[['1 号','3 号'],['性别','年龄']] #显式索引__花式索引df1.iloc[[0,2],[1,0]] #隐式索引__花式索引df1.loc['1 号':'2 号','年龄':'性别'] #显式切片,左右都闭df1.iloc[0:2,0:2] #隐式切片,左闭右开,Pandas切片有自动截断规则,结束下标超过最大索引时,会自动取到末尾转置: df.T翻转: df.iloc[:,::-1] 左右翻转 df.iloc[::-1,:] 上下翻转重写:df['列标签']=Series新数据。添加列:df['新列']=Series/列表。添加行:df.loc['新行']=[数据]分离:sr = df['列标签']拼接:pd.concat([df1,df2],axis=1)axis=0:纵向拼接(增加行)。axis=1:横向拼接(增加列)。查重:pd数据.index.is_unique #确认行标签有无重复,返回True代表无重复,返回False代表有重复
# 数组法创建 srv1 = [10,20,30,40]v2 = ['女','男','男','女']v3 = [1,2,3,4]i = [ '1 号', '2 号', '3 号', '4 号' ]sr1 = pd.Series(v1,index = i)sr2 = pd.Series(v2,index = i)sr3 = pd.Series(v3,index = i)df1 = pd.DataFrame({'年龄':sr1,'性别':sr2})df1['牌照'] = sr3 #增加一列df1.loc['5 号'] = [50,'男',5] #使用显示索引增加一行df1v=[53,None,72,82]sr = pd.Series(v,index=['1 号', '2 号','3 号','4 号'])sr.fillna(0) #None用0填充sr.fillna(np.mean(sr)) #用均值填sr.fillna(method='ffill')#用前值填sr.fillna(method='bfill')#用后值填


这里出现了错误,问题出在中文系统导出的文件它们默认编码是 GBK,不是 pandas 默认的UTF-8,因此要加encoding参数,并用编码gbk赋值,也可以在 Excel 中另存为 CSV 时,选择 “CSV UTF-8(逗号分隔)(*.csv)”,这样默认就是 UTF-8 编码,
改完以后可以读取csv内容了

df = pd.read_csv('泰坦尼克.csv',index_col = 0)df.pivot_table('是否生还',index = '性别',columns = '船舱等级')age = pd.cut(df['年龄'],[0,18,120]) #将年龄以18为分水岭进行分割df.pivot_table('是否生还',index = ['性别',age],columns = '船舱等级')fare = pd.qcut(df['费用'],2)df.pivot_table('是否生还',index = ['性别',age],columns = ['船舱等级',fare])假设有两个 Series:
sr1 = pd.Series([10, 20, 30], index=['A', 'B', 'C'])sr2 = pd.Series([1, 2, 3], index=['B', 'C', 'D'])请问执行 sr1 + sr2 后,结果中索引 A 对应的值是多少?索引 D 对应的值是多少?结果对象的数据类型变成了什么(int还是float)?答题:A值对NaN,D值对应NaN,结果为int解析: 1.pandas按索引标签对齐进行运算,一方有、另一方没有的索引对应数值会变成NaN;2.NaN属于浮点数float,所以整个Series自动升级为float64,上面答错。
现有泰坦尼克号数据 df,包含列:是否生还 (0/1)、性别 (女/男)、年龄 (连续数值)、票价 (连续数值)。请使用 pd.cut 和 df.pivot_table 完成以下操作:将“年龄”分为三组:[0, 18] (少年), (18, 60] (青年), (60, 150] (老年),统计不同性别、不同年龄组下的平均生还率。(提示:你需要将 age 分箱后的结果作为 pivot_table 的 index 或 columns)。答题:
age = pd.cut(df['年龄'],[0,18,60,120])df.pivot_table('是否生还',index = '性别',columns = age)解析: 使用 pd.cut 将连续变量变为了分类变量,然后扔进 pivot_table 的 columns 或 index 中聚合,注意需将'年龄'分箱,需增加labels=['少年','青年','老年']
age = pd.cut(df['年龄'],[0,18,60,120])df.pivot_table('是否生还',index = '性别',columns = age)1. 索引器中的显示索引.loc[] 和隐式索引 .iloc[] 一定要分清,是核心内容必须掌握
Pandas是神经网络及金融量化的重要工具,下篇我将更新实战项目来训练学习成果,对于本篇各位同学和前辈有什么心得或建议欢迎留言一起交流。谢谢看完,晚安~