1.pandas库安装导入
windows下和linux下都可以使用pip安装,安装之前最好把pip升级到最新版
python -m pip install --upgrade pip #升级pip
pip install pandas #安装pandas
import pandas as pd #导入并别名为pd
2.常用方法介绍
函数 |
说明 |
pd.Series() |
一维数据结构 |
pd.DataFrame() |
二维数据结构(可以理解为表格结构) |
pd.Panel() |
三维数据结构 |
dict={'数学':90,'语文':80,'英语':100}
dicts1=pd.Series([1,2,3,4,5])
dicts2=pd.DataFrame(dict,index=['小明','小刘','小王'])
dicts1
#输出
0 1
1 2
2 3
3 4
4 5
dtype: int64
dicts2
#输出
数学 语文 英语
------------------
小明 90 80 100
小刘 90 80 100
小王 90 80 100
函数 |
说明 |
pd.read_csv(‘date.csv’) |
读取.csv的文件 |
pd.read_excel(‘date.xlsx’) |
读取.xlsx文件,需要单独安装此模块 |
date.columns |
输出所有的列,也就是第一行 |
date.index |
输出表的总行数 |
date.reindex([a,b,c,d,e],method=‘bfill’) |
reindex修改列值(索引列表),method设置前填充(ffill)或者后填充(bfill) |
date.values |
打印所有行列对应的数据 |
date.head(2) |
打印数据的头2行 |
date·.tail(2) |
打印数据的后2行 |
date.loc[] |
行和列的引用 |
date.iloc[] |
行和列的引用 |
date.T |
翻转行和列 |
date.sort_index(axis=0/1,ascending = True/False) |
1是横向排序,0是纵向排序,True是升序,False是降序 |
date.sort_values(by =" ",ascending = True/False) |
以行里某个列排序可以按照多列排序,True是升序,False是降序 |
data=pd.read_csv('data.csv')
data
#输出
id key value
---------------------------------------
0 1251147 品牌 Apple
1 1251147 商品名称 苹果iPad mini 3
2 1251147 商品毛重 0.61kg
3 1251147 商品产地 中国
4 1251147 品牌 Apple
5 1251147 商品名称 苹果iPad mini 3
6 1251147 硬盘 128G
7 1251147 尺寸 7.8英寸-9英寸
data.columns
#输出
Index(['id', 'key', 'value'], dtype='object')
data.index
#输出
RangeIndex(start=0, stop=8, step=1)
data.reindex([0,1,2,3,4,5,6,7,8],method='ffill')
#输出
#8做了7的后填充,这里没有重新赋值给data所以不覆盖原数据
id key value
-----------------------------------------
0 1251147.0 品牌 Apple
1 1251147.0 商品名称 苹果iPad mini 3
2 1251147.0 商品毛重 0.61kg
3 1251147.0 商品产地 中国
4 1251147 品牌 Apple
5 1251147 商品名称 苹果iPad mini 3
6 1251147.0 硬盘 128G
7 1251147.0 尺寸 7.8英寸-9英寸
8 1251147.0 尺寸 7.8英寸-9英寸
- 3.pandas过滤/去重/检查是是否有空数据/排除数据中的空格
函数 |
说明 |
date.loc[data.duplicated()==True,data.columns] |
duplicated()==True #找出数据中的重复记录,data.columns找出数据重复的行数据 |
data.drop_duplicates(inplace=True) |
删除原数据,如果不加inplace=True删除覆盖,inplace=Flase不覆盖 |
data.describe() |
数据描述,包括,计数、平均值、标准差、最小值、最大值、3个百位数 |
data.isnull() |
检查数据是否为空 |
data.fillna() |
填充数据,可以配合iloc按列填充 |
data.loc[:,‘id’].str.strip() |
利用str的方法清除空格,配合loc和iloc使用 |
data.loc[data.duplicated()==True,data.columns]
#输出
#找出重复的数据,这里不显示8条数据是因为上面reindex没做覆盖数据操作,原数据没有第8条
id key value
------------------------------------
4 1251147 品牌 Apple
5 1251147 商品名称 苹果iPad mini 3
data.drop_duplicates(inplace=True)
date
#输出
#去重后的数据
id key value
--------------------------------------
0 1251147 品牌 Apple
1 1251147 商品名称 苹果iPad mini 3
2 1251147 商品毛重 0.61kg
3 1251147 商品产地 中国
6 1251147 硬盘 128G
7 1251147 尺寸 7.8英寸-9英寸
data = data.reindex([0,1,2,3,5,6,7,8]) #添加2条空记录,方便测试isnull
data
#输出
id key value
------------------------------------------
0 1251147.0 品牌 Apple
1 1251147.0 商品名称 苹果iPad mini 3
2 1251147.0 商品毛重 0.61kg
3 1251147.0 商品产地 中国
5 NaN NaN NaN
6 1251147.0 硬盘 128G
7 1251147.0 尺寸 7.8英寸-9英寸
8 NaN NaN NaN
data.describe()
#输出
#这个函数主要针对全整数型的数据,处理含字符串的没有意义
id
------------------
count 6.0 #计数
mean 1251147.0 #平均值
std 0.0 #标准差
min 1251147.0 #最小值
25% 1251147.0 #较低的百分位数
50% 1251147.0 #中位数
75% 1251147.0 #较高的百分位数
max 1251147.0 #最大值
data_nan=data.isnull() #将为空的值赋给一个变量
import numpy as np
np.where(data_nan==True)
#输出
#输出的为空值的array数组位置
(array([4, 4, 4, 7, 7, 7], dtype=int64),
array([0, 1, 2, 0, 1, 2], dtype=int64))
data.fillna(0) #将所有的空值替换为0
#输出
id key value
-----------------------------------------
0 1251147.0 品牌 Apple
1 1251147.0 商品名称 苹果iPad mini 3
2 1251147.0 商品毛重 0.61kg
3 1251147.0 商品产地 中国
5 0.0 0 0
6 1251147.0 硬盘 128G
7 1251147.0 尺寸 7.8英寸-9英寸
8 0.0 0 0
data = data.iloc[:,0:1].fillna(1251147) #单独更换某一列的数据
data
#输出
#更换key列空值为1251147
id
--------------
0 1251147.0
1 1251147.0
2 1251147.0
3 1251147.0
5 1251147.0
6 1251147.0
7 1251147.0
8 1251147.0
函数 |
说明 |
pd.concat([data1,data2,data3]) |
按行级合并3个表的数据 |
pd.merge(data1,data2,left_on=id,right_on=ids) |
默认以第一个字段进行合并,加left_on=左表的字段名, right_on=右表的字段表 |