import numpy as np
import pandas as pd
pd.__version__
文本文件的读取: 对于csv或txt后缀的文本文件,用read_csv函数来实现文件的导入。重要参数的含义如下
pd.read_csv(file_path_or_buffer, #指定导入文件的具体路径
sep = ', ', # 指定元数据中各种变量之间的分割符,默认是逗号,可自行修改
header='infer' , #默认将数据集首行作为表头(列名),若原数据集无表头则设置为header=None
names=None, # 若原数据集中无变量名称 , 可通过该参数在数据读取时设定
index_col = None, # 指定将某些行作为行索引
usecols = None, # 指定需要读取的变量名
converters = None , # 通过字典格式,为数据集中的某些变量设置不同的数据
skiprows = None, # 数据读取时,指定需要跳过原数据集的起始行数
skipfooter = 0, # 读取数据时,指定需要跳过原数据集的末尾行数
nrows = None, # 指定数据读取的行数
comment = None,# 指定注释符,读取数据时遇到行首指定的注释符则跳过该行
encoding = None, # 设置编码方式,解决中午乱码问题 (通常设置为utf-8或给gbk))
数据读取进来之后形成的表格在pandas中称为DataFrame,这是一个带有索引的二维数据结构,每一行都有索引,数据读取进来的时候会生成从0开始的整数索引
pd.read_excel() 读取xls、xlsx后缀的excel电子表格数据 和read_csv一样
df.head() # 查看导入数据的前五行 # df.head(10) 看前十行
df.tail(7) # 查看数据的后七行
df.shape # 查看数据的规模
df.index # 查看数据的行索引
df.columns # 查看数据列名
df.info() # 查看整体信息
df.describe() # 进行简单描述统计
df.isnull() # 查看数据集是否有缺失值
df.isnull().sum() # 对缺失值进行统计 每一个列里面的缺失值都会出来
df.isnull().sum(axis=1) # 对每一行的缺失值统计 axis=1行 axis=0列
df.duplicated() # 查看数据集是否有重复值
# 数据选取
提取某列 df["gender"]
注意 提取出来的单列或者单行是另一种数据类型 series 也是带有名称和索引的一维数组
提取行 df[5:11] 左闭右开 5到10行
基于标签的索引 loc l为label 没有左闭右开 直接提取5到10行
df.loc[5:10, ['name', ['age'], ['custom_amt']]] # 提取五到十行并返回姓名年龄交易额散列
df1 = df.set_index('name') # 将name这一列作为索引
df1.loc['姓名', :] 读取这位用户的全部信息
df.loc[df['age']<20, :] 提取出所有年龄小于20的信息
基于位置的索引 iloc
df.iloc[0:5, 0:3] # 提取前五行前三列的数据
#随机抽样
df.sample(n=None, # 指定抽样的数量,默认为1
frac=None, # 按比例进行抽样
replace=False, # 是否允许抽样样本数量高于数据集的数量
weights=None, # 样本权重
random_state=None, # 随机数种子
axis = None, # 对行采样还是对列采样,默认对行采样)
新增一列 df2.loc[: , "权重"]=W w是一个列表
PREVIOUS_MAX_ROW = pd.options.display.max_rows
pd.options.display.max_rows = 20 # 设置显示最大行
np.random.seed(12345)
处理缺失值 NaN: Not a Number NA:Not available
isnull() 判断是否为缺失值
data.dropna() dropna要用一个新的变量保存 原变量是不会变的
data.fillna(0) 填充缺失值
df.fillna({1:0.5, 2:0}) 第一列填充0.5 第二列填充0
删除重复值
data.duplicated() 判断之前是否出现过
data.drop_duplicates() 删除重复值
data.drop_duplicate(['列名'], keep='last') 删除某一列重复值 保留最后一个