泰坦尼克号任务-载入、观察、探索性分析

数据载入及初步观察,探索性分析

载入和观察

相对路径和绝对路径

  • 查看当前工作目录使用os.getcwd(),改变当前工作目录os.chdir(路径),获得当前目录的绝对路径命令os.path.abspath('.')
  • 相对路径就是在当前工作目录下的文件,可以直接打开data = pd.read_csv('train.csv')
  • 绝对路径就是可以使用任何文件路径,
  • 因为反斜杠\用作转义字符,所以要使用双斜杠\\
  • 使用原始字符串r+路径,在路径前加上r,如:data = pd.read_csv(r'E:\数分学习\hands-on-data-analysis-master\第一单元项目集合\train.csv')
  • 使用/,如:data = pd.read_csv(r'E:/数分学习\hands-on-data-analysis-master/第一单元项目集合/train.csv')
  • read_csvread_table,不同处之一是前者使用,作为字段分隔符,后者使用制表符(空格回车换行等),要想使得读取的数据格式一样,使用read_table(文件,sep = ',')
  • 数据量过大时候,为避免内存不足,使用分块读取,返回的类型为Textfilereader不再是dataframe
  data = pd.read_csv('train.csv', chunkersize = 100)  #每100行读取一次

  for piece in data
      print(piece)                                   #分块读取全部数据,在for循环内进行数据处理

  data.get_chunk()                                # 读取一块

修改列名

data.rename(columns={'PassengerId' : '乘客ID','Survived' : '是否幸存', 'Pclass' : '乘客等级(1/2/3等舱位)'})  #不改变原始数据内容,需要赋值给新的变量,假如直接修改源数据,请添加inplace = True

newcolums = ['乘客ID', '是否幸存', '乘客等级(1/2/3等舱位)']
data.columns = newcolunms  # 直接修改了原始数据的列名

data = pd.read_csv('train.csv', names = newcolumns) #读取数据时直接重新命名列

查看数据的基本信息

df.info():          # 打印摘要
df.describe():      # 描述性统计信息
df.values:          # 数据 <ndarray>
df.to_numpy()       # 数据 <ndarray> (推荐)
df.shape:           # 形状 (行数, 列数)
df.columns:         # 列标签 <Index>
df.columns.values:  # 列标签 <ndarray>
df.index:           # 行标签 <Index>
df.index.values:    # 行标签 <ndarray>
df.head(n):         # 前n行
df.tail(n):         # 尾n行
pd.options.display.max_columns=n: # 最多显示n列
pd.options.display.max_rows=n:    # 最多显示n行
df.memory_usage():                # 占用内存(字节B)

查看空值

#判断数据是否为空,为空的地方返回True,其余地方返回False
data.isnull().head()
# 查看所有输入是否有空值,有返回True,否则返回False
data1.isnull().values.any()  
# 查看每一列是否有NaN:
df.isnull().any(axis=0)
# 查看每一行是否有NaN:
df.isnull().any(axis=1)

数据保存

data.to_csv('train_chinese.csv', encoding= 'GBK')

pandas基础

查看数据列名

# 链表推导式

[conlumns for conlumns in df]

# 直接list list(df) #columns属性返回index 可以通过tolist转为list df.columns.tolist()

看看数据的列和行

df['w']  #选择表格中的'w'列,使用类字典属性,返回的是Series类型
df.w    #选择表格中的'w'列,使用点属性,返回的是Series类型
df[['w']]  #选择表格中的'w'列,返回的是DataFrame属性
data[0:2]  #返回第1行到第2行的所有行,前闭后开,包括前不包括后
data[1:2]  #返回第2行,从0计,返回的是单行,通过有前后值的索引形式,
data.iloc[-1]   #选取DataFrame最后一行,返回的是Series
data.iloc[-1:]   #选取DataFrame最后一行,返回的是DataFrame

查看具体数据

# 查看具体的数据,loc 是根据index查找;iloc是根据行号,列号,从0开始逐次加1
midage.loc[[100,105,108],['性别','客舱','乘客姓名']]
midage.iloc[[100,105,108],[3,4,10]]

删除行或者列

# axis默认等于0,即按行删除,这里表示按行删除第1行和第三行,inplace = True 会对原数据修改
df1.drop(labels=[1,3]) 
df1.drop(labels=range(1:4))  #删除第1行到第三行
# axis=1 表示按列删除,删除多列
df1.drop(labels=[列名,列名],axis=1)  
df.drop([列名, 列名], axis=1)
df.drop(columns=[列名, 列名])
#删除多索引的dataframe中特定的索引组合
df.drop(index='cow', columns='small')
df.drop(index=('falcon', 'weight'))
df.drop(index='length', level=1)
#删除列的其他方法
del df[列名]
df.pop(列名)

条件筛选以及交并集操作

data[(data["a"]>2) & (data["b"]<9)] # 交集 &
data[(data["a"]>2) | (data["b"]<9)] # 并集 |
data[~(data["a"]>2)] # 补集 ~
#isin(序列):选出在序列中的数据
lis = [3, 4]
data[data['a'].isin(lis)]
# 对称差集:^属于集合A和B的并集但不属于A和B的交集的元素
data[(data['a']>=2) ^ (data['b']<=8)]#对称差集

索引重置

midage = midage.reset_index(drop =True)
#reset_index()函数的参数
#drop: 重新设置索引后是否将原索引作为新的一列并入DataFrame,默认为False
#inplace: 是否在原DataFrame上改动,默认为False

排序

# sort_values(by, axis=0, ascending=True, inplace=False, na_position='last') 
df.sort_values(by=['col1', 'col2']) # by的值可以是列名,或者列名列表
df.sort_values(by='col1', ascending=False) # 下降排序,默认上升排序
df.sort_values(by='col1', ascending=False, na_position='first') #空值优先
#sort_index(axis=0, ascending=True, inplace=False, na_position='last')
df.sort_index() #默认按照行升序排列,同sort_values

pandas进行算术运算

转载前请联系我,未经允许请勿转载:
作者:vision
标题:泰坦尼克号任务-载入、观察、探索性分析
原文链接:https://www.wangpc.cc/da/kaggle-titanic-1/
上一篇
下一篇