![对比Excel,轻松学习Python数据分析(入职数据分析师系列)](https://wfqqreader-1252317822.image.myqcloud.com/cover/712/25462712/b_25462712.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
3.2 DataFrame 表格型数据结构
3.2.1 DataFrame是什么
Series是由一组数据与一组索引(行索引)组成的数据结构,而DataFrame是由一组数据与一对索引(行索引和列索引)组成的表格型数据结构。之所以叫表格型数据结构,是因为DataFrame的数据形式和Excel的数据存储形式很相近,接下来的章节主要围绕DataFrame这种表格型数据结构展开。下面就是一个简单的DataFrame数据结构。
![](https://epubservercos.yuewen.com/3B6FA6/13916129805955706/epubprivate/OEBPS/Images/35793-0071-0146.jpg?sign=1739295321-9uPkX3EpsIMwylOToyP3o6ezz29NqgJs-0-f86d46295c147a82318f391154adb21f)
上面这种数据结构和Excel的数据结构很像,既有行索引又有列索引,由行索引和列索引确定唯一值。如果把上面这种结构用Excel表展示如下表所示。
![](https://epubservercos.yuewen.com/3B6FA6/13916129805955706/epubprivate/OEBPS/Images/35793-0072-0147.jpg?sign=1739295321-zDUKk36u8Io1b1bGIpCeyHpJcmDwpOEI-0-1b95bcfa2e78d2d6b9b5be69ff39be80)
3.2.2 创建一个DataFrame
创建DataFrame使用的方法是pd.DataFrame(),通过给DataFrame()方法传入不同的对象即可实现。
传入一个列表
传入一个列表的实现如下所示。
![](https://epubservercos.yuewen.com/3B6FA6/13916129805955706/epubprivate/OEBPS/Images/35793-0072-0148.jpg?sign=1739295321-xIgs0Cde6T6sQfTXCuGnKdEkVKDxHMc1-0-33842c13cd56ab27b1b47f301dc4b796)
只传入一个单一列表时,该列表的值会显示成一列,且行和列都是从0开始的默认索引。
传入一个嵌套列表
![](https://epubservercos.yuewen.com/3B6FA6/13916129805955706/epubprivate/OEBPS/Images/35793-0072-0149.jpg?sign=1739295321-UtwvsjG49mbQrKpsGvQaaaZaHdImpAe7-0-3353246f71a6e696fc960c3b99d05c90)
当传入一个嵌套列表时,会根据嵌套列表数显示成多列数据,行、列索引同样是从0开始的默认索引。列表里面嵌套的列表也可以换成元组。
![](https://epubservercos.yuewen.com/3B6FA6/13916129805955706/epubprivate/OEBPS/Images/35793-0072-0150.jpg?sign=1739295321-Nl4opsc80MEH81zId3laE1ZSdDnqnit4-0-ae061301a0a329b137e7b10c03fd9558)
指定行、列索引
如果只给DataFrame()方法传入列表,DataFrame()方法的行、列索引都是默认值,则可以通过设置columns参数自定义列索引,设置index参数自定义行索引。
![](https://epubservercos.yuewen.com/3B6FA6/13916129805955706/epubprivate/OEBPS/Images/35793-0073-0151.jpg?sign=1739295321-YUM1seYxJcywVpFSSAb887OuOeSQO57Q-0-1a11c931e71d482d9dfc2996e3825cca)
传入一个字典
传入一个字典的实现如下所示。
![](https://epubservercos.yuewen.com/3B6FA6/13916129805955706/epubprivate/OEBPS/Images/35793-0073-0152.jpg?sign=1739295321-tjnmjVHg1NfIFvPbokkXTdOjngXujmMO-0-aa106ae335c98771e288ce00576fc982)
直接以字典的形式传入DataFrame时,字典的key值就相当于列索引,这个时候如果没有设置行索引,行索引还是使用从0开始的默认索引,同样可以使用index参数自定义行索引,代码如下:
![](https://epubservercos.yuewen.com/3B6FA6/13916129805955706/epubprivate/OEBPS/Images/35793-0074-0153.jpg?sign=1739295321-I5yENTcAZOVrQIdpsZX679W59P9eSjQb-0-23e62d2c1df647b8aaf2b513affe9500)
3.2.3 获取DataFrame的行、列索引
利用columns方法获取DataFrame的列索引。
![](https://epubservercos.yuewen.com/3B6FA6/13916129805955706/epubprivate/OEBPS/Images/35793-0074-0154.jpg?sign=1739295321-amJcqYX49c16LVnFS2ct0Z8KHnsdKHRY-0-37bfc5905f6b2f64a4cd27d994a95dee)
利用index方法获取DataFrame的行索引。
![](https://epubservercos.yuewen.com/3B6FA6/13916129805955706/epubprivate/OEBPS/Images/35793-0074-0155.jpg?sign=1739295321-9F6Wz9YwnR8fNeQminsmzKjQ7llijb29-0-37f6d7a03e4dc788c89a05de2a230ba0)
3.2.4 获取DataFrame的值
获取DataFrame的值就是获取DataFrame中的某些行或列,有关行、列的选择在第6章会有详细讲解。