Python---Pandas模块

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
原文地址:https://www.cnblogs.com/soyo/p/8445015.html