Pandas数据处理与分析
SUMMER1
什么是Pandas
百度百科:pandas 是基于 NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的 数据模型 ,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
2
Pandas安装
pip install pandas
2
Pandas数据结构
1、Series——序列
一维数组,其中的元素类型可以是任何类型的,比如:整型、浮点型、字符串型、对象类型等。
初始化包含多种类型数据的序列
import pandas as pds_1= pd.Series([9, 'zheng', 'beijing', {'a':1}])print(s_1)
执行结果:
0 91 zheng2 beijing3 {'a': 1}dtype: object
指定索引,并通过索引访问序列元素
s_2=pd.Series([3, -5, 7, 4], index=['a', 'b', 'c', 'd'])for key, value in enumerate(s_2): print(key,' : ', value)print("通过索引访问:", s_2['d'])print("通过下标访问:",s_2[3])
执行结果:
0 : 31 : -52 : 73 : 4通过索引访问: 4通过下标访问: 4
用字典构造序列
dic = {"a": 2, "b": 8, "c": 9, "d": None}s_3 = pd.Series(dic, name="demo1")print(s_3)
执行结果:
a 2.0b 8.0c 9.0d NaNName: demo1, dtype: float64
2、DataFrame
pandas常用对象,是存储不同类型数据的二维数组,其常用属性有 values、index、columns、dtypes,可以分别获取元素、索引、列名和类型。
创建一个DataFrame
data = { '性别':['男','女','女','男','男'], '姓名':['小明','小红','小芳','大黑','张三'], '年龄':[20,21,25,24,29], '职业':['老师','工人',None,None,None]}df = pd.DataFrame(data,index=[1,2,3,4,5], columns=['姓名','性别','年龄','职业'])print(df)
执行结果:
姓名 性别 年龄 职业1 小明 男 20 老师2 小红 女 21 工人3 小芳 女 25 None4 大黑 男 24 None5 张三 男 29 None
values属性
data = df.valuesprint(data) # 结果是一个二维数组,print(data[1][1]) # 可以通过二位数组下标访问元素
执行结果:
[['小明' '男' 20 '老师'] ['小红' '女' 21 '工人'] ['小芳' '女' 25 None] ['大黑' '男' 24 None] ['张三' '男' 29 None]] 女
index属性
print(df.index)
执行结果:
Int64Index([1, 2, 3, 4, 5], dtype='int64')
columns属性
Index(['姓名', '性别', '年龄', '职业'], dtype='object')
dtypes属性
print(df.dtypes)
执行结果:
姓名 object性别 object年龄 int64职业 objectdtype: object
head、tail获取头尾指定行
print(df.head(2))print(df.tail(2))
执行结果:
姓名 性别 年龄 职业1 小明 男 20 老师2 小红 女 21 工人 姓名 性别 年龄 职业4 大黑 男 24 None5 张三 男 29 None
describe()
统计数值列的相关信息,包括:计数,平均值,标准差,最小值
最大值以及较低的百分位数和50。
print( df.describe())
执行结果:
年龄count 5.000000mean 23.800000std 3.563706min 20.00000025% 21.00000050% 24.00000075% 25.000000max 29.000000
sort_index()排序
按照行或列进行排序,可指定一列或几列对数据进行排。
默认调用方式:
DataFrame.sort_index(axis=0, level=None, ascending=True, inplace=False, kind='quicksort', na_position='last', sort_remaining=True, by=None)
参数含义:
axis:0按照行名排序,1按照列名排序;
level:sort on values in specified index level(s)(按照给定的索引level顺序排序,默认为None);
ascending:True为升序排列;False为降序排列;
inplace:排序之后的数据直接替换原来的数据,默认为False;
kind:排序方法,{‘quicksort’, ‘mergesort’, ‘heapsort’}, default ‘quicksort’。
na_position:缺失值排在最前面或者最后面{"first","last"},默认是最后面'last';
by:按照某一列或几列数据进行排序,在sort_index中不建议使用。
# 行名排序 降序df_row=df.sort_index(axis=0, ascending=False)print(df_row)# 列名排序 降序df_col=df.sort_index(axis=1, ascending=False)print(df_col)
结果:
姓名 性别 年龄 职业5 张三 男 29 None4 大黑 男 24 None3 小芳 女 25 None2 小红 女 21 工人1 小明 男 20 老师 职业 性别 年龄 姓名1 老师 男 20 小明2 工人 女 21 小红3 None 女 25 小芳4 None 男 24 大黑5 None 男 29 张三
sort_values()排序
指定by参数,即指定哪几行或哪几列对数据排序。
# 按照年龄列降序排序df_1=df.sort_values(axis=0, ascending=False, by='年龄')print(df_1)
结果:
姓名 性别 年龄 职业5 张三 男 29 None3 小芳 女 25 None4 大黑 男 24 None2 小红 女 21 工人1 小明 男 20 老师