pandas介绍
Pandas是基于Numpy的专业数据分析库,可以灵活高效的处理各种数据集。它提供了两种类型的数据结构,分别是DataFrame和Series,DataFrame可以理解为Excel里面的一张表,Series就是表中的某一列,后面学习和用到的所有Pandas骚操作,都是基于DataFrmae和Series进行的操作。
Pandas和Excel、SQL相比,只是调用和处理数据的方式变了,**核心都是对源数据进行一系列的处理**,在正式处理之前,更重要的是**谋定而后动,明确分析的意义,理清分析思路之后再处理和分析数据,往往事半功倍。**
创建DataFrame对象
创建一个DataFrame对象
import pandas as pd
# 字典作为数据源
# 键值为
data_src = {'name':['李华','张三','李四','王二'],'age':[18,19,19,18],'sex':['男','男','男','男']}
pd.DataFrame(data_src)
运行结果:
name age sex
0 李华 18 男
1 张三 19 男
2 李四 19 男
3 王二 18 男
其中0123为index,如果在创建时不指定index,系统会自动生成从0开始的索引。
name age sex 为columns
中间的部分就是数据:values
通过改变index,columns、values来控制数据
读取csv文件
数据源的格式大多是.csv和.xlsx和.slx,分析数据第一步就是导入数据源
在pandas中使用pandas.read_csv()导入一个csv数据,返回一个DataFrame对象,这个方法有很多的参数,具体可以查阅官方文档
pd.read_csv(
file_path_or_buffer:union(str,pathlib.Path),
usecols=None,
engine=None,
)
usecols :Return a subset of the columns.指定读取的数据中的几列,第一列下表从0开始
engine:engine{‘c’, ‘python’}, optional
Parser engine to use. The C engine is faster while the python engine is currently more feature-complete.
一般使用python引擎可以避免一些编码问题
return:DataFrame
数据查看、处理与分析
查看数据
df.describe() 查看统计信息,根据数据类型的不同统计类别不同,numeric、string,object
df.head(n:int=5):默认查看前5行数据,返回n行数据集
df.tail(n:int=5):默认查看后5行数据,返回n行数据集
df.info() 格式查看,各列数据类型和缺失情况,数据集的行列数,数据集的大小,每一列的数据类型,以及有多少条非空数据。
数据分析
# 查看是否有缺失值
df.isnull() 查看数据是否为空
print(df.isnull().sum().sort_values(axis=0,ascending=False))
列的增删改查
增
增加一列,用df[‘新列名’] = 新列值的形式,在原数据基础上赋值即可
df['新列'] = range(1,len(df)+1) # 类似于字典
删
删除一列,drop函数制定删除对应的列,axis = 1表示针对列的操作,inplace为True,则直接在源数据上进行修改,否则源数据会保持原样。
"""
axis指定删除行还是列,axis=1删除的是列,axis=0删除的是行
inplace=True,remove操作替换df元数据。
columns参数指定要删除的列
index参数指定要删除的行
"""
df.drop('新列',axis=1,inplace=True)
查
查看一列,用df[‘列名’]即可
print(df['name'])
查看多列,用列表作为参数:df[[‘第一列’,’第二列’,’第三列’..]]
print(df[['name','age','sex']])
改
对某列值进行整体的更改:df[‘旧列名’] = 某个值或者某列值,就完成了对原列数值的修改#
# 修改列名
df.columns = ['column1','column2','column3'...]
常用数据类型及其操作
1、字符串
字符串类型是最常用的格式之一,Pandas中字符串的操作和原生字符串操作几乎一模一样,唯一不同的是需要在操作前加上”.str”。
在常规实际应用中,我们可以先理解为object对应的就是str格式,int64对应的就是int格式,float64对应的就是float格式即可。
# 数据清洗后要替换原来的值
df['description'] = df['description'].str.strip() # 字符串两端去空格
2、 数值型
数值型数据,常见的操作是计算,分为与单个值的运算,长度相等列的运算。
# 将价格列的数值除以100
df['price'] = df['price'] / 100 # the same is true for other operations