导入numpy和pandas
# 如果没安装这两个库可以通过
# conda install numpy 或者 pip install numpy
# conda install pandas 或者 pip install pandas
import numpy as np
import pandas as pd
载入数据
虽然有上面那么多种用法,不过用的最多的还是read_csv
和read_table
这两个。
这次学习使用的是泰坦尼克号的数据,kaggle链接——https://www.kaggle.com/c/titanic/overview。
#写入代码
df_relative = pd.read_csv('train.csv')
df_relative.head()
这些特征的含义出题者也是给出了解释。
当相对路径报错的时候,可以尝试使用绝对路径。
import os
#os.getcwd()查看当前目录
os.getcwd() + 'train.csv' # 绝对路径
逐块读取
当一个csv文件比较大的时候,如果直接读取整个csv,服务器的内存是吃不消的,因此需要用chunksize去分块处理。
df=pd.read_csv('data.csv', chunksize=1000) # chunksize自己设置
for chunk in df:
print(chunk)
将表头英文换成中文,并且将乘客ID设置成索引
# 方法1 在读取文件的时候就设置
df = pd.read_csv('train.csv', names=['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','兄弟姐妹个数','父母子女个数','船票信息','票价','客舱','登船港口'],index_col='乘客ID',header=0)
df.head()
# 方法2 读取文件还是一样读取,在后面设置
d = {'PassengerId':'乘客ID', 'Survived':'是否幸存', 'Pclass':'仓位等级', 'Name':'姓名', 'Sex':'性别', 'Age':'年龄','SibSp':'兄弟姐妹个数', 'Parch':'父母子女个数', 'Ticket':'船票信息', 'Fare':'票价', 'Cabin':'客舱', 'Embarked':'登船港口'}
df_table.rename(columns=d, inplace=True) # 更换名字
df_table.set_index('乘客ID', inplace=True) # 设置索引
df_table.head()
基本用法
df.info()
df.head() # 前五行
df.tail() # 后五行
df.isnull() # 判断数据是否为空,空的地方是True
df.to_csv('train_chinese.csv') # 将DataFrame导出为csv文件
删除多余的列
del df[a] # a是列的名称
df('a', axis=1, inplace=True) # 跟上面的效果一样
筛选
例子: 以"Age"为条件,将年龄在10岁以上和50岁以下的乘客信息显示出来,并将这个数据命名为midage
midage = df[(df["Age"]>10)& (df["Age"]<50)]
midage.head(5)
例子:将midage的数据中第100行的"Pclass"和"Sex"的数据显示出来
midage.loc[[100],['Pclass','Sex']]
例子:使用loc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来
midage.loc[[100,105,108],['Pclass','Name','Sex']]
例子:使用iloc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来
midage.iloc[[100,105,108],[2,3,4]]
排序
原始数据为:
例子1:让行索引升序排序
df_table.sort_index(axis=0)
例子2:让列索引升序排序
df_table.sort_index(axis=1)
例子3:任选两列数据同时降序排序
df_table.sort_values(['d', 'b'], ascending=[False, False])
小总结:如果是要按行索引或者列索引则使用sort_index()
,如果要按值排序则使用sort_value()