Pandas的基本功能

一、Pandas的常用32个方法和功能
DataFrame() 创建一个DataFrame对象
df.values 返回ndarray类型的对象
df.shape 返回行列数
df.index 获取行索引
df.set_index 设置索引
df.reset_index 重制索引
df.columns 获取列索引
df.rename 重新设置列名
df.dtypes 查看每列数据类型
df.axes 获取行及列索引
df.T 行与列对调
df.info() 打印DataFrame对象的信息
df.head(i) 显示前 i 行数据
df.tail(i) 显示后 i 行数据
df.count() # 返回每一列中的非空值的个数
df.value_counts() #按值计数
df.unique() 唯一去从
df.describe() 查看数据按列的统计信息
df.sum() # 返回每一列的和, 无法计算返回空, 下同
df.sum(numeric_only=True) # numeric_only=True代表只计算数字型元素, 下同
df.max() # 返回每一列的最大值
df.min() # 返回每一列的最小值
df.argmax() # 返回最大值所在的自动索引位置
df.argmin() # 返回最小值所在的自动索引位置
df.idxmax() # 返回最大值所在的自定义索引位置
df.idxmin() # 返回最小值所在的自定义索引位置
df.mean() # 返回每一列的均值
df.median() # 返回每一列的中位数
df.var() # 返回每一列的方差
df.std() # 返回每一列的标准差
df.isnull() # 检查df中空值, NaN为True, 否则False, 返回一个布尔数组
df.notnull() # 检查df中空值, 非NaN为True, 否则False, 返回一个布尔数组
import pandas as pd
fpath = "./datas/read_test.txt"
# 使用pd.read_csv读取数据
df = pd.read_csv(fpath)
df
			date	prov	isp		pv		uv
	0	2020-04-26	hunan	cmnet	2000	1000
	1	2020-04-26	hunan	cmnet	3000	1500
	2	2020-04-26	hunan	cmcc	4000	1000
	3	2020-04-26	hubei	ctc		2500	1000
	4	2020-04-26	hubei	cmcc	2000	1000
	5	2020-04-26	hubei	ctc		2100	1600
	6	2020-04-27	hunan	cmnet	4000	1700
	7	2020-04-27	hunan	cmnet	3200	1500
	8	2020-04-27	hunan	cmcc	2800	1600
	9	2020-04-27	hubei	ctc		2600	1400
	10	2020-04-27	hubei	cmcc	3800	1900
	11	2020-04-27	hubei	ctc		2400	1900
二、查看信息类函数
# 查看前几行数据
df.values
	array([['2020-04-26', 'hunan', 'cmnet', 2000, 1000],
	       ['2020-04-26', 'hunan', 'cmnet', 3000, 1500],
	       ['2020-04-26', 'hunan', 'cmcc', 	4000, 1000],
	       ['2020-04-26', 'hubei', 'ctc',  	2500, 1000],
	       ['2020-04-26', 'hubei', 'cmcc', 	2000, 1000],
	       ['2020-04-26', 'hubei', 'ctc', 	2100, 1600],
	       ['2020-04-27', 'hunan', 'cmnet', 4000, 1700],
	       ['2020-04-27', 'hunan', 'cmnet', 3200, 1500],
	       ['2020-04-27', 'hunan', 'cmcc', 	2800, 1600],
	       ['2020-04-27', 'hubei', 'ctc', 	2600, 1400],
	       ['2020-04-27', 'hubei', 'cmcc', 	3800, 1900],
	       ['2020-04-27', 'hubei', 'ctc', 	2400, 1900]], dtype=object)
# 查看数据的形状,返回(行数、列数)
df.shape
	(12, 5)
#查看行索引
df.index	
	RangeIndex(start=0, stop=12, step=1)
df2 = df.set_index('date')
df2
				prov	isp		pv		uv
		date				
	2020-04-26	hunan	cmnet	2000	1000
	2020-04-26	hunan	cmnet	3000	1500
	2020-04-26	hunan	cmcc	4000	1000
	2020-04-26	hubei	ctc		2500	1000
	2020-04-26	hubei	cmcc	2000	1000
	2020-04-26	hubei	ctc		2100	1600
	2020-04-27	hunan	cmnet	4000	1700
	2020-04-27	hunan	cmnet	3200	1500
	2020-04-27	hunan	cmcc	2800	1600
	2020-04-27	hubei	ctc		2600	1400
	2020-04-27	hubei	cmcc	3800	1900
	2020-04-27	hubei	ctc		2400	1900
df2.reset_index(inplace = True, drop = True)
df2
		prov	isp		pv		uv
	0	hunan	cmnet	2000	1000
	1	hunan	cmnet	3000	1500
	2	hunan	cmcc	4000	1000
	3	hubei	ctc		2500	1000
	4	hubei	cmcc	2000	1000
	5	hubei	ctc		2100	1600
	6	hunan	cmnet	4000	1700
	7	hunan	cmnet	3200	1500
	8	hunan	cmcc	2800	1600
	9	hubei	ctc		2600	1400
	10	hubei	cmcc	3800	1900
	11	hubei	ctc		2400	1900
#获取列索引
df.columns
	Index(['date', 'prov', 'isp', 'pv', 'uv'], dtype='object')
#重新设置列表名
df2 = df
df2.columns=['a','b','c','d','e']
df2
			 a		 b		 c		 d		 e
	0	2020-04-26	hunan	cmnet	2000	1000
	1	2020-04-26	hunan	cmnet	3000	1500
	2	2020-04-26	hunan	cmcc	4000	1000
	3	2020-04-26	hubei	ctc		2500	1000
	4	2020-04-26	hubei	cmcc	2000	1000
	5	2020-04-26	hubei	ctc		2100	1600
	6	2020-04-27	hunan	cmnet	4000	1700
	7	2020-04-27	hunan	cmnet	3200	1500
	8	2020-04-27	hunan	cmcc	2800	1600
	9	2020-04-27	hubei	ctc		2600	1400
	10	2020-04-27	hubei	cmcc	3800	1900
	11	2020-04-27	hubei	ctc		2400	1900
#重新设置列表名
df2.rename(columns = {'a':'日期','b':'省份','c':'运营商','d':'pv','e':'uv'}, inplace = True)
df2
			 日期	 省份	 运营商	 pv		 uv
	0	2020-04-26	hunan	cmnet	2000	1000
	1	2020-04-26	hunan	cmnet	3000	1500
	2	2020-04-26	hunan	cmcc	4000	1000
	3	2020-04-26	hubei	ctc		2500	1000
	4	2020-04-26	hubei	cmcc	2000	1000
	5	2020-04-26	hubei	ctc		2100	1600
	6	2020-04-27	hunan	cmnet	4000	1700
	7	2020-04-27	hunan	cmnet	3200	1500
	8	2020-04-27	hunan	cmcc	2800	1600
	9	2020-04-27	hubei	ctc		2600	1400
	10	2020-04-27	hubei	cmcc	3800	1900
	11	2020-04-27	hubei	ctc		2400	1900
#查看每列数据类型,object为通用数据类型,一般某列中有多种数据类型,或者全为str,则类型为object。默认int、float类型的位数为操作系统位数。
df.dtypes
	日期     object
	省份     object
	运营商    object
	pv      int64
	uv      int64
	dtype: object
df.axes
	[RangeIndex(start=0, stop=12, step=1),
	 Index(['日期', '省份', '运营商', 'pv', 'uv'], dtype='object')]
#旋转行和列
df.T
			0		1		2		3		4		5		6		7		8		9		10		11
	日期		2020-04-26	2020-04-26	2020-04-26	2020-04-26	2020-04-26	2020-04-26	2020-04-27	2020-04-27	2020-04-27	2020-04-27	2020-04-27	2020-04-27
	省份		hunan	hunan	hunan	hubei	hubei	hubei	hunan	hunan	hunan	hubei	hubei	hubei
	运营商	cmnet	cmnet	cmcc	ctc		cmcc	ctc		cmnet	cmnet	cmcc	ctc		cmcc	ctc
	pv		2000	3000	4000	2500	2000	2100	4000	3200	2800	2600	3800	2400
	uv		1000	1500	1000	1000	1000	1600	1700	1500	1600	1400	1900	1900
#查看表的前十行,默认是查看前五行
df.head(10)
			 日期	省份		运营商	pv		 uv
	0	2020-04-26	hunan	cmnet	2000	1000
	1	2020-04-26	hunan	cmnet	3000	1500
	2	2020-04-26	hunan	cmcc	4000	1000
	3	2020-04-26	hubei	ctc		2500	1000
	4	2020-04-26	hubei	cmcc	2000	1000
	5	2020-04-26	hubei	ctc		2100	1600
	6	2020-04-27	hunan	cmnet	4000	1700
	7	2020-04-27	hunan	cmnet	3200	1500
	8	2020-04-27	hunan	cmcc	2800	1600
	9	2020-04-27	hubei	ctc		2600	1400
#查看尾五行,默认是五行
df.tail()
			 日期	省份		运营商	pv		 uv
	7	2020-04-27	hunan	cmnet	3200	1500
	8	2020-04-27	hunan	cmcc	2800	1600
	9	2020-04-27	hubei	ctc		2600	1400
	10	2020-04-27	hubei	cmcc	3800	1900
	11	2020-04-27	hubei	ctc		2400	1900
#得到一个详细的描述,只对数值列起作用
#count:多少个数,mean:平均值,std:标准差,min:最小值,25%:1/4数,50%:中位数 75%:3/4数,max:最大值
df.describe()
				pv			 uv
	count	12.000000		12.000000
	mean	2866.666667		1425.000000
	std		743.863787		346.738046
	min		2000.000000		1000.000000
	25%		2325.000000		1000.000000
	50%		2700.000000		1500.000000
	75%		3350.000000		1625.000000
	max		4000.000000		1900.000000
三、数据统计类函数
#统计每一列的非空值
df.count()
	日期      12
	省份      12
	运营商    12
	pv     	 12
	uv     	 12
	dtype: int64
#去重并看到次数
df['省份'].value_counts()
	hunan    6
	hubei    6
	Name: 省份, dtype: int64
#去重
df['省份'].unique()
	array(['hunan', 'hubei'], dtype=object)