Pandas 是 Python 语言的一个扩展程序库,用于数据分析。
Pandas 是一个开放源码、BSD 许可的库,提供高性能、易于使用的数据结构和数据分析工具。
Pandas 名字衍生自术语 “panel data”(面板数据)和 “Python data analysis”(Python 数据分析)。
Pandas 一个强大的分析结构化数据的工具集,基础是 Numpy
(提供高性能的矩阵运算)。
Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据。
Pandas 可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。
Pandas 广泛应用在学术、金融、统计学等各个数据分析领域。
Pandas 的主要数据结构是 Series (一维数据)与 DataFrame(二维数据),这两种数据结构足以处理金融、统计、社会科学、工程等领域里的大多数典型用例
引入Pandas:
import pandas as pd
Pandas Series 类似表格中的一个列(column),类似于一维数组,可以保存任何数据类型。
Series 由索引(index)和列组成,函数如下:
pandas.Series( data, index, dtype, name, copy)
参数说明:
创建一个简单的 Series
实例:
'''
pandas_series
'''
import pandas as pd
a = [1, 2, 3]
myvar = pd.Series(a)
print(myvar)
# 0 1
# 1 2
# 2 3
# dtype: int64
输出简介:
从上图可知,如果没有指定索引,索引值就从 0 开始,我们可以根据索引值读取数据:
import pandas as pd
a = [1, 2, 3]
myvar = pd.Series(a)
print(myvar[1]) # 2
我们可以指定索引值,如下实例:
'''
指定索引值
'''
str = ['google', 'facebook', 'github']
mystr = pd.Series(str, index=["x", "y", "z"])
print(mystr)
# x google
# y facebook
# z github
# dtype: object
我们也可以使用 key/value
对象,类似字典来创建 Series
:
'''
使用key/value对象来设置Series对象
'''
sites = {1: 'google', 2: 'tencent', 3: 'weiwei'}
mysites = pd.Series(sites, name="dahezhiquan")
print(mysites)
# 1 google
# 2 tencent
# 3 weiwei
# Name: dahezhiquan, dtype: object
DataFrame
是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame
既有行索引也有列索引,它可以被看做由 Series
组成的字典(共同用一个索引)。
更形象的演示:
DataFrame
构造方法如下:
pandas.DataFrame( data, index, columns, dtype, copy)
参数说明:
Pandas DataFrame
是一个二维的数组结构,类似二维数组。
'''
基本使用
'''
data = [['google', 12], ['face', 13], ['win', 14]]
df = pd.DataFrame(data, columns=['site', 'age'], dtype=float)
print(df)
# site age
# 0 google 12.0
# 1 face 13.0
# 2 win 14.0
以下实例使用 ndarrays
创建,ndarray
的长度必须相同, 如果传递了 index
,则索引的长度应等于数组的长度。如果没有传递索引,则默认情况下,索引将是range(n)
,其中n是数组长度。
'''
ndarrays 创建
'''
data_item = {'Sites': ['google', 'time', 'wangwei'], 'Age': [12, 13, 14]}
df2 = pd.DataFrame(data_item)
print(df2)
# Sites Age
# 0 google 12
# 1 time 13
# 2 wangwei 14
还可以使用字典(key/value
),其中字典的 key
为列名:
'''
使用key-values值创建
'''
shit = [{'a': 1, 'b': 2}, {'a': 5, 'b': 3, 'c': 2}]
df3 = pd.DataFrame(shit)
print(df3)
# a b c
# 0 1 2 NaN
# 1 5 3 2.0
没有对应的部分数据为 NaN
Pandas 可以使用 loc
属性返回指定行的数据,如果没有设置索引,第一行索引为 0,第二行索引为 1,以此类推:
# 获取第一行的数据
print(df3.loc[0])
# a 1.0
# b 2.0
# c NaN
# Name: 0, dtype: float64
也可以返回多行数据,使用 [[ ... ]]
格式,...
为各行的索引,以逗号隔开:
# 返回第二行和第三行的数据
print(df3.loc[[0, 1]])
# a b c
# 0 1 2 NaN
# 1 5 3 2.0
Pandas 可以很方便的处理 CSV 文件
简单的读取csv文件的内容:
'''
读取csv文件内容
'''
df = pd.read_csv('nba.csv')
print(df)
# to_string() 用于返回 DataFrame 类型的数据,如果不使用该函数,
# 则输出结果为数据的前面 5 行和末尾 5 行,中间部分以 ... 代替。
print(df.to_string())
我们也可以使用 to_csv()
方法将 DataFrame 存储为 csv 文件:
'''
将dataframe转储为csv文件
'''
nme = ["Google", "Runoob", "Taobao", "Wiki"]
st = ["www.google.com", "www.runoob.com", "www.taobao.com", "www.wikipedia.org"]
ag = [90, 40, 80, 98]
dict = {'name': nme, 'site': st, 'age': ag}
df2 = pd.DataFrame(dict)
print(df2)
# name site age
# 0 Google www.google.com 90
# 1 Runoob www.runoob.com 40
# 2 Taobao www.taobao.com 80
# 3 Wiki www.wikipedia.org 98
df2.to_csv('site.csv')
执行成功后,我们打开 site.csv 文件,显示结果如下:
head( n )
方法用于读取前面的 n 行,如果不填参数 n ,默认返回 5 行。
# 读取前面的 6 行
print(df.head(6))
# Name Team Number ... Weight College Salary
# 0 Avery Bradley Boston Celtics 0.0 ... 180.0 Texas 7730337.0
# 1 Jae Crowder Boston Celtics 99.0 ... 235.0 Marquette 6796117.0
# 2 John Holland Boston Celtics 30.0 ... 205.0 Boston University NaN
# 3 R.J. Hunter Boston Celtics 28.0 ... 185.0 Georgia State 1148640.0
# 4 Jonas Jerebko Boston Celtics 8.0 ... 231.0 NaN 5000000.0
# 5 Amir Johnson Boston Celtics 90.0 ... 240.0 NaN 12000000.0
#
# [6 rows x 9 columns]
tail( n )
方法用于读取尾部的 n 行,如果不填参数 n ,默认返回 5 行,空行各个字段的值返回 NaN。
# 默认读取末尾的5行
print(df.tail())
# Name Team Number Position ... Height Weight College Salary
# 453 Shelvin Mack Utah Jazz 8.0 PG ... 6-3 203.0 Butler 2433333.0
# 454 Raul Neto Utah Jazz 25.0 PG ... 6-1 179.0 NaN 900000.0
# 455 Tibor Pleiss Utah Jazz 21.0 C ... 7-3 256.0 NaN 2900000.0
# 456 Jeff Withey Utah Jazz 24.0 C ... 7-0 231.0 Kansas 947276.0
# 457 NaN NaN NaN NaN ... NaN NaN NaN NaN
#
# [5 rows x 9 columns]
info()
方法返回表格的一些基本信息:
# 返回表格的基本信息
print(df.info())
#
# RangeIndex: 458 entries, 0 to 457
# Data columns (total 9 columns):
# # Column Non-Null Count Dtype
# --- ------ -------------- -----
# 0 Name 457 non-null object
# 1 Team 457 non-null object
# 2 Number 457 non-null float64
# 3 Position 457 non-null object
# 4 Age 457 non-null float64
# 5 Height 457 non-null object
# 6 Weight 457 non-null float64
# 7 College 373 non-null object
# 8 Salary 446 non-null float64
# dtypes: float64(4), object(5)
# memory usage: 32.3+ KB
# None