Pandas模块是一个强大的数据分析和处理工具。它提供快速,灵活,富有表现力的数据结构,能为复杂情形下的数据提供坚实的基础分析功能。
复杂情形可能有以下3种:
1.数据库表或Excel表,包含了多列不同数据类型的数据。
2.任意的【矩阵,二维表,观测统计数据】,允许独立的行或列带有标签。
3.时间序列类型的数据,包括有序和无序的情形,甚至是频率不固定的情形。
Pandas两个重要的数据结构:系列(Series)和数据框(DataFrame)
import pandas as pd from bokeh.server.urls import per_app_patterns print "创建 DataFrame" data={‘id‘:["小苏","小周","小海"],‘age‘:[18,25,76],‘address‘:["陕西","越南","韩国"]} df=pd.DataFrame(data) print df print "改变DataFram的结构" df2=pd.DataFrame(data,columns=[‘id‘,‘age‘,‘address‘],index=[‘第一行‘,‘第二行‘,‘第三行‘]) print df2 print "***获取一列的值***" print df2[‘address‘] print "***获取前2行的值***" print df2.head(2) print "***获取指定的行的值***" print df2.loc["第二行"] print "***获取第二行第三列的值***" print df2.loc["第二行","address"] print "***修改指定的值" df2.at["第一行","address"]="中国" print df2 df2[‘big‘]=df2[‘age‘]>18 print df2 del df2[‘big‘] print df2 df3=pd.read_csv("/home/soyo/桌面/spark编程测试数据/2.csv") #返回DF print df3 df4=pd.concat([df2,df3],ignore_index=True) print df4 print df2 df5=pd.DataFrame.mean(df2) print df5 print df2.mean() data2={‘id‘:["小苏","小周","小海","小周"],‘age‘:[18,25,76,25],‘address‘:["陕西","越南","韩国","越南"]} df10=pd.DataFrame(data2,columns=[‘id‘,‘age‘,‘address‘]) print df10 print "*********删除重复的行*********" print df10.drop_duplicates() print "********统计DataFrame中的任何一个列的值出现次数**********" print pd.Series.value_counts(df10["age"]) print pd.Series.value_counts(df10["address"]) print df10["age"].value_counts() print "***返回DF倒数的2行***" print df10.tail(2) print "**********Pandas创建系列*************" #系列与一维数组类似 s=pd.Series([5,8,"soyo"],name="小度") print s s1=pd.Series({‘a‘:64,‘b‘:49,‘c‘:25},name="number") print s1 print "获取系列的值" print s1[1] print s1["c"] s1[‘d‘]=36 print s1 print "***系列支持向量化操作***" #向量化操作:能够同时对一个系列的所有值执行同样的操作 import numpy as np print np.sqrt(s1) print s1*s1
结果:
创建 DataFrame address age id 0 陕西 18 小苏 1 越南 25 小周 2 韩国 76 小海 改变DataFram的结构 id age address 第一行 小苏 18 陕西 第二行 小周 25 越南 第三行 小海 76 韩国 ***获取一列的值*** 第一行 陕西 第二行 越南 第三行 韩国 Name: address, dtype: object ***获取前2行的值*** id age address 第一行 小苏 18 陕西 第二行 小周 25 越南 ***获取指定的行的值*** id 小周 age 25 address 越南 Name: 第二行, dtype: object ***获取第二行第三列的值*** 越南 ***修改指定的值 id age address 第一行 小苏 18 中国 第二行 小周 25 越南 第三行 小海 76 韩国 id age address big 第一行 小苏 18 中国 False 第二行 小周 25 越南 True 第三行 小海 76 韩国 True id age address 第一行 小苏 18 中国 第二行 小周 25 越南 第三行 小海 76 韩国 id age power 0 3 8 45 1 4 23 84 2 4 23 3 小华 35 4 soyo 88 45 1 address age id id age power 0 中国 18.0 小苏 NaN 1 越南 25.0 小周 NaN 2 韩国 76.0 小海 NaN 3 NaN NaN NaN 3 8 45 4 NaN NaN NaN 4 23 84 5 NaN NaN NaN 4 23 6 NaN NaN NaN 小华 35 7 NaN NaN NaN soyo 88 45 1 id age address 第一行 小苏 18 中国 第二行 小周 25 越南 第三行 小海 76 韩国 age 39.666667 dtype: float64 age 39.666667 dtype: float64 id age address 0 小苏 18 陕西 1 小周 25 越南 2 小海 76 韩国 3 小周 25 越南 *********删除重复的行********* id age address 0 小苏 18 陕西 1 小周 25 越南 2 小海 76 韩国 ********统计DataFrame中的任何一个列的值出现次数********** 25 2 18 1 76 1 Name: age, dtype: int64 越南 2 陕西 1 韩国 1 Name: address, dtype: int64 25 2 18 1 76 1 Name: age, dtype: int64 ***返回DF倒数的2行*** id age address 2 小海 76 韩国 3 小周 25 越南 **********Pandas创建系列************* 0 5 1 8 2 soyo Name: 小度, dtype: object a 64 b 49 c 25 Name: number, dtype: int64 获取系列的值 49 25 a 64 b 49 c 25 d 36 Name: number, dtype: int64 ***系列支持向量化操作*** a 8.0 b 7.0 c 5.0 d 6.0 Name: number, dtype: float64 a 4096 b 2401 c 625 d 1296 Name: number, dtype: int64