kaggle泰坦尼克号获救数据集地址:https://www.kaggle.com/c/titanic/data
import numpy as np
import pandas as pd
如果加载失败,说明还未安装,安装方法为:
win+r进入cmd控制台
c:\user\admin>pip install pandas
c:\user\admin>python
>>>import pandas(验证是否安装成功)
- pandas手册:https://www.pypandas.cn/
- numpy手册:https://www.numpy.org.cn/
1.载入数据方法:
(1)使用相对路径
df=pd.read_csv('train.csv')
df.head(3)
相对路径载入报错时,可以使用os.getcwd()
查看当前工作目录,该命令使用前必须载入import os, sys
(2)使用绝对路径
#使用相对路径载入数据
df=pd.read_csv('/数据分析/train.csv')
df.head(3)
2.pd.read_csv()
和pd.read_table()
区别
相关参数:https://www.cnblogs.com/mahailuo/p/8325288.html
DataFrame是一个重量级的数据结构,当一个dataframe比较大,占据较大内存的时候,同时又需要对这个dataframe做较复杂或者复杂度非O(1)的操作时,会由于内存占用过大而导致处理速度极速下降。
对此,我们的方法是尽量避免直接对过大的dataframe直接操作(当然有时候没有办法,必须对整体的dataframe进行操作,这时就需要从其他方面优化,比如尽量较少不必要的列,以降低内存消耗),以从csv文件读取数据为例,可以通过read_csv方法的chunksize参数,设定读取的行数,返回一个固定行数的迭代器,每次读取只消耗相应行数对应的dataframe的内存
chunker=pd.read_csv('train.csv',chunksize=1000)
相关参考
- pandas性能提升之利用chunksize参数对大数据分块处理
- 用Pandas 处理大数据的3种超级方法
对于某些英文资料,我们可以通过翻译来更直观的熟悉我们的数据
df = pd.read_csv('train.csv', names=['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','兄弟姐妹个数','父母子女个数','船票信息','票价','客舱','登船港口'],index_col='乘客ID',header=0)
df.head()
其他更改表头方法python中dataframe更改列名称
- 使用rename函数更改列名
df2=df1.rename(columns={'name':'stu_name','class':'stu_class'}) print(df2)
- 直接更改全部的列名称
df1.columns=['id','stu_name','stu_class']
导入数据后,你可能要对数据的整体结构和样例进行概览,比如说,数据大小、有多少列,各列都是什么格式的,是否包含null等
通过info()
函数查看数据的类型、个数
df.info()
head()
与 tail()
用于快速预览 Series 与 DataFrame,默认显示 5 条数据,也可以指定显示数据的数量。
df.head(10)
df.tail(15)
判断数据是否为空并返回前五行内容(为空的地方返回True,其余地方返回False)
df.isnull().head()
df.to_csv('文件名')
df.to_hdf('文件名')
df.to_excel('文件名')
相关参考:IO tools (text, CSV, HDF5, …)
此处将改变后的数据在工作目录下保存为一个新文件train_chinese.csv
df.to_csv('train_chinese.csv')
pandas是基于NumPy构建的模块,pandas包含序列Series
(一维数据)和数据框DataFrame
(二维数据)两种最主要数据结构,索引Index
是跟序列和数据框密切相关的数据结构
import numpy as np
import pandas as pd
sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
example_1=pd.Series(sdata)
example_1
相关参考:pandas基础 - 数据结构和数据类型
使用df.columns
查看每列列名
import numpy as np
import pandas as pd
df=pd.read_csv('train.csv')
df.head()
df.columns
方法一:
df['Cabin'].head()
方法二:
df.Cabin.head()
(1)删除行
方法一:drop
df.drop(['1', '3'], inplace=True)
df.drop(df.index[0], inplace=True)
(2)删除列
方法一:del
如del df['A'] # 删除A列,会就地修改
方法二:drop
df = df.drop(['B', 'C'], axis=1)
df.drop(df.columns[0], axis=1, inplace=True)
参考:pandas删除某些列、行总结
如果想要完全的删除你的数据结构,使用inplace=True
,因为使用inplace就将原数据覆盖了,所以这里没有用
将[‘PassengerId’,‘Name’,‘Age’,‘Ticket’]这几个列元素隐藏,只观察其他几个列元素
df.drop(['PassengerId','Name','Age','Ticket'],axis=1).head(3)
表格数据中,最重要的一个功能就是要具有可筛选的能力,选出我所需要的信息,丢弃无用的信息。
参考:使用Pandas对数据进行筛选和排序
以“Age”为筛选条件,显示年龄在10岁以下的乘客信息
df[df['Age']<10].head()
以"Age"为条件,将年龄在10岁以上和50岁以下的乘客信息显示出来,并将这个数据命名为midage
midage=df[(df['Age']>10)&df['Age']<50]
midage.head()
reset_index()
主要用于重置索引,在获得新的index,原来的index变成数据列,保留在数据框中,不想保留原来的index的话可以使用参数drop=True,默认False
。
参考:https://www.jianshu.com/p/223de3248f90
将midage的数据中第100行的"Pclass"和"Sex"的数据显示出来
midage = midage.reset_index(drop=True)
midage.head(10)
midage.loc[[99],['Pclass','Sex']]
loc
即location, 是按dataframe 的index 名称进行索引。iloc
是按dataframe 的index 位置(0,1,2,… )进行索引。midage.loc[[100,105,108],['Pclass','Name','Sex']]
#因为你主动的延长了行的距离,所以会产生表格形式
#注意此处列名的表示方法
midage.iloc[[100,105,108],[2,3,4]]
Pandas 支持三种排序方式,按索引标签排序,按列里的值排序,按两种方式混合排序
(1)按索引标签排序df. sort_index()
sort_index(axis=0, level=None, ascending=True, inplace=False, kind='quicksort', na_position='last', sort_remaining=True, by=None)
参数 | 说明 |
---|---|
by | 指定列名(axis=0或’index’)或索引值(axis=1或’columns’) |
axis | 若axis=0或’index’,则按照指定列中数据大小排序;若axis=1或’columns’,则按照指定索引中数据大小排序,默认axis=0 |
level | 默认None,否则按照给定的level顺序排列 |
ascending | 是否按指定列的数组升序排列,默认为True,即升序排列 |
inplace | 是否用排序后的数据集替换原来的数据,默认为False,即不替换 |
kind | 排序方法,{‘quicksort’, ‘mergesort’, ‘heapsort’}, default ‘quicksort’。 |
na_position | {‘first’,‘last’},设定缺失值的显示位置 |
(2)按列中的值进行排序df. sort_values()
.sort_index()
执行)DataFrame.sort_values(by=‘##’,axis=0,ascending=True, inplace=False, na_position=‘last’)
参数 | 说明 |
---|---|
by | 指定列名(axis=0或’index’)或索引值(axis=1或’columns’) |
axis | 若axis=0或’index’,则按照指定列中数据大小排序;若axis=1或’columns’,则按照指定索引中数据大小排序,默认axis=0 |
ascending | 是否按指定列的数组升序排列,默认为True,即升序排列 |
inplace | 是否用排序后的数据集替换原来的数据,默认为False,即不替换 |
na_position | {‘first’,‘last’},设定缺失值的显示位置 |
(3)按索引与值排序
通过参数 by 传递给 DataFrame.sort_values()
的字符串可以引用列或索引层名。
参考:https://www.jianshu.com/p/f0ed06cd5003
对泰坦尼克号数据(trian.csv)按票价和年龄两列进行综合排序(降序排列)
通过观察数据可以发现,票价越高的存活率越高
text.sort_values(by=['票价', '年龄'], ascending=False).head(20)
两个DataFrame相加后,会返回一个新的DataFrame,对应的行和列的值会相加,没有对应的会变成空值NaN
如有frame1_a
为
frame1_b
为
frame1_a + frame1_b
为
通过泰坦尼克号数据如何计算出在船上最大的家族有多少人
结果为10
max(text['兄弟姐妹个数']+text['父母子女个数'])
利用describe()
函数将返回如下数据
count : 样本数据大小
mean : 样本数据的平均值
std : 样本数据的标准差
min : 样本数据的最小值
25% : 样本数据25%的时候的值
50% : 样本数据50%的时候的值
75% : 样本数据75%的时候的值
max : 样本数据的最大值
查看泰坦尼克号数据各列数据的基本统计数据
可以发现
text.describe()