简介
Pandas 是python的一个数据分析包,最初被作为金融数据分析工具而开发出来,提供了大量能使我们快速便捷地处理数据的函数和方法。
数据结构说明:
- Series:一维数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很相近,其区别是:List中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。
- Time- Series:以时间为索引的Series。
- DataFrame:二维的表格型数据结构。很多功能与R中的data.frame类似。可以将DataFrame理解为Series的容器。以下的内容主要以DataFrame为主。
- Panel :三维的数组,可以理解为DataFrame的容器。
数据准备
code | name | age | gender |
2019137331 | congcong | 20 | TRUE |
2019137332 | jim | 21 | TRUE |
2019137333 | jack | 32 | TRUE |
2019137334 | lucy | 20 | FALSE |
2019137335 | amanda | 43 | FALSE |
一、生成数据表格或数组(即dataframe/series)
1. 导入CSV或EXCEL
df = pd.DataFrame(pd.read_csv(‘users.csv’,header=1))
df = pd.DataFrame(pd.read_excel(‘users.xlsx’))
2. 自定义dataframe
import numpy as np
df = pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006],
"date":pd.date_range('20130102', periods=6),
"city":['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai', 'BEIJING '],
"age":[23,44,54,32,34,32],
"category":['100-A','100-B','110-A','110-C','210-A','130-F'],
"price":[1200,np.nan,2133,5433,np.nan,4432]},
columns =['id','date','city','category','age','price'])
3. 自定义series
sr = pd.Series(['aa','bb','cc']) # 默认索引是0,1,2
sr = pd.Series([{'a':'aa','b':'bb','c':'cc'}])
sr = pd.Series(['aa','bb','cc'], index = ['a','b','c']) # 第二个参数是自定义索引,一旦加上自定义索引,series就支持了字典的特性,相当加了key
sr.index # Index(['a', 'b', 'c'], dtype='object')
sr['a'] # 'aa',支持数组的特性,得到某个索引对应的值
sr[0] # 'aa',支持数组的特性,依然可以使用默认索引
sr.a # 'aa',支持字典的特性
sr.index[0] # 'a'
sr.items() # <zip at 0x1a633b28948>
sr.keys() # Index(['a', 'b', 'c'], dtype='object')
'a' in sr # True
二、查看数据
#基本信息查看
df.shape #(5, 4),查看dataframe的维度,5行4列
df.head(2) # 只想查看前2行,默认是5行
df.tail(2) # 只想查看最后2行,默认是5行
df.info() #查看dataframe的详细信息,包括每列的数据类型,内存占用大小
df.index # 获取索引
df.values # 获取值数组
df.columns # Index(['code', 'name', 'age', 'gender'], dtype='object'),查看所有列
df.dtypes #查看每列的数据类型
# 列相关
df.name # 查看name列的数据, 可以理解为一维数组,是一个pandas.core.series.Series类型
df['name'] # 查看name列的数据,与上一行等价
df[['name','code']] # # 查看name和code两列的数据, 是一个pandas.core.frame.DataFrame类型
# 行相关
df.loc[0] # 查看第一行的数据, 可以理解为一维数组,是一个pandas.core.series.Series类型
df.loc[2:4] # 查看2,3,4行的数据, 是一个pandas.core.frame.DataFrame类型
df.loc[[2,3,4]] # 查看2,3,4行的数据, 是一个pandas.core.frame.DataFrame类型,与上一行等价
df.iloc[0,1] # congcong,获取第一行,第二列的数据,是一个字符串类型,也可以是整型等。
df.iloc[0,1:3] # 获取第一行,第二三列的数据,是一个series类型
三、数据筛选
"""
布尔索引来筛选数据
"""
df[df.name =='congcong']
df[df.name.str.endswith('cong')]
df[df.name.str.contains('congcong') & df.gender] # 只返回name包括congcong并且gender为True的数据