Summary of learning data analysis(一)

Summary of learning data analysis(一)

Problem 1:如何解决read_csv()和read_table()两函数读取csv格式文件造成的差异?

solution 1:首先需要了解csv格式文件的特点:csv(Comma-Separated Values)文件是一种逗号分隔值的文件,而read_csv()函数读取以’,‘分割的文件到dataframe(以下简称df),read_table()函数读取以’/t’(即tab)分割的文件到df,两个函数的主要差别在于分隔符默认值不同,即sep参数设置的不同,因此要想使两个函数读取csv格式的文件到df的格式相同,就需要重新设置sep参数,对于read_table()函数而言,使用如下方法读取csv文件:
df = pd.read_table("",sep=',')

Problem 2:为何要利用pandas进行逐块读取文件,又如何进行逐块读取文件?

solution 2:
采用逐块读取文件主要目的是防止文件过大,若一次性加载到内存,可能会导致内存不足。
逐块读取文件的原理:通过设置chunksize(块大小)参数进行逐块加载。事实上,其本质是将文本分成若干块,每次处理chunksize行数据,最终返回一个TextFileReader对象。若对该对象进行迭代遍历(for循环),可完成输出各个块数据等操作。

chunk_data_all = pd.read_csv("xxx",chunksize=xx)
for chunk_data in chunk_data_all:
    print(chunk_data)

Problem 3:如何高效地修改DataFrame中的index和column

solution 3:使用df的rename方法,eg:

df = df.renmae(index={'原名':'新名'},columns={'原名':'新名'})

关于rename的具体内容和其他修改方案可参考:
https://blog.csdn.net/missyougoon/article/details/83780845

Problem 4:df查看数据基本信息的方法

solution 4:

常用函数说明
df.info()打印摘要
df.describe()描述性统计信息
df.head(n)前n行
df.tail(n)尾n行
df.to_numpy()数据 (ndarray
df.isnull()判断缺失值
df.memory_usage()占用内存(字节B)
常用属性说明
df.dtypes每一列数据的格式
df.values数据 (ndarray
df.shape形状 (行数, 列数)
df.ndim维度(dimension)
df.columns列标签 (Index
df.columns.values列标签 (ndarray
df.index行标签 (Index
df.index.values行标签 (ndarray

ps:常用属性(属性后面是不带括号的)

problem 5:如何将更改后的数据加载到一个csv文件格式的文件中

solution 5:使用to_csv()函数,该函数的很多操作同read_csv()
二者参数解析参见:https://blog.csdn.net/u010801439/article/details/80033341/
to_csv的使用方法参见:https://blog.csdn.net/toshibahuai/article/details/79034829

problem 6:pandas如何删除某一列

solution 6:主要有三种方法
1.del方法

del df['A']    #删除A列,就地修改df

2.drop方法

  • 通过列名称删除
df = df.drop(['B','C'],axis=1)    #改行代码中drop方法不就地修改,创建副本返回
df.drop(['B','C'],inplace = True) #添加inplace = True后就地修改
  • 通过列数删除(传入参数为int,列表/切片)
df.drop(df.columns[0],axis=1,inplace = True)       #删除第一列
df.drop(df.columns[0:3],axis=1,inplace = True)     #删除前三列
df.drop(df.columns[[0,2]],axis=1,inplace = True)   #删除一三列

problem 7:如何进行行/列/综合的升序/降序

solution 7:

函数说明
df.sort_index(axis=0)对行索引升序排列
df.sort_index(axis=1, ascending=False)对列索引降序排列
df[‘列名’].sort_values()按值对Series进行排序
df.sort_values(by=[‘列名1’,‘列名2’])根据某列的值进行排序
df[‘列名’].rank(methods=’’ , ascending=True)Series对原数据进行平均排名
df.rank(axis=‘columns’)在列上进行平均排名

ps:ascending意为:上升的/上升;综合排序可采用列表/切片

关于本次学习的代码(部分)如下:

第一部分

1.导库并使用绝对路径导入数据

import numpy as np
import pandas as pd
train_data = pd.read_csv("D:/contest/kaggle/Titanic/train.csv")
train_data.head()

在这里插入图片描述
2.逐块读取数据

#每1000行作为一个数据模块,逐块读取
chunk_data_all = pd.read_csv("D:/contest/kaggle/Titanic/train.csv",chunksize=100)

3.更改索引名

#更改列索引名称
train_data = train_data.rename(columns={'PassengerId':'乘客ID','Survived':'是否幸存',
                                       'Pclass':'乘客等级(1/2/3等舱位)','Name':'乘客姓名',
                                       'Sex':'性别','Age':'年龄','SibSp':'堂兄弟/妹个数',
                                      'Parch':'父母与小孩个数','Ticket':'船票信息','Fare':'票价',
                                      'Cabin':'客舱','Embarked':'登船港口' })
#train_data.head(10)
train_data.tail(15)

在这里插入图片描述
4.判断数据是否为空

train_data.isnull().sum()   #统计各列缺失值的数目
#train_data.isnull()          #判断数据是否为空/NAN

在这里插入图片描述
5.保存数据至新文件

#保存数据
train_data.to_csv("D:/contest/kaggle/Titanic/train_chinese.csv")

第二部分

1.查看数据的列索引

#查看df数据的每列的项(属于查看数据的常用方法)
#由此可见,df的rename方法就地修改了df
train_data.columns

在这里插入图片描述
2.查看某一列的数据

#查看"客舱"一列的项
train_data['客舱'].head()
#train_data.客舱.head()

在这里插入图片描述
3.删除某一列

#删除survived/是否幸存一列
train_data.drop(['是否幸存'],axis=1,inplace=True)
#del train_data['是否幸存']
train_data.head()

在这里插入图片描述
4.设定标准筛选数据

train_data[train_data['年龄']<10].head()
midage = train_data[(train_data['年龄']<50)&(train_data['年龄']>10)]  #注意括号不要漏

在这里插入图片描述
#5.索引数据

midage = midage.reset_index(drop=True)
#将midage的数据中第100行的"Pclass"和"Sex"的数据显示出来
#midage.loc[[100],['乘客等级(1/2/3等舱位','性别']]
#使用loc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来
#midage.iloc[[100,105,108],[2,3,4]]
#使用iloc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来
midage.iloc[[100,105,108],[2,3,4,5]]

在这里插入图片描述
6.进行行/列/综合的升序/降序

df.sort_values(by=['年龄','票价'],ascending=False).head()

在这里插入图片描述
7.df类型数据的运算

df = df['堂兄弟/妹个数'] + df['父母与小孩个数']
df.tail()

在这里插入图片描述

小结

事实上关于泰坦尼克号中的分析,由于数据较多,单凭排序等方法并不够直观。因此,可以通过调用seaborn库分析各个变量(自变量)和生存情况(因变量)两者的图像关系,用图像来进行分析。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值