一、引入
import pandas as pd # 数据分析, 代码基于numpy
import numpy as np # 处理数据, 代码基于ndarray
二、创建对象
(一)Series对象
Series对象是一行的数据类型,类似于一位数组
1、通过序列创建
(1)使用默认行名
# 默认以数字0开始作为键值使用np.nan表示不参与计算
s = pd.Series([1, 3, 5, np.nan, 6, 8])
# 结果
0 1.0
1 3.0
2 5.0
3 NaN
4 6.0
5 8.0
dtype: float64
(2)使用自定义行名
# index属性指定键(即每行名称)
s = pd.Series([1, 2, 3, 4], index=list("abcd"))
print(s)
# 结果
a 1
b 2
c 3
d 4
dtype: int64
2、通过字典创建
# 字典的键会自动变为行名
d = {
"name":"Tom", "age":18}
s = pd.Series(d)
# 结果
name Tom
age 18
dtype: object
(二)DataFrame对象
DataFrame对象为表格对象,可以理解为是二位数组
1、通过序列创建
dates = pd.date_range("20180112", periods=6)
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list("ABCD"))
print(df)
# 结果
A B C D
2018-01-12 -1.273980 -0.611487 0.694974 0.912239
2018-01-13 -1.161407 -0.054078 -0.085019 0.372066
2018-01-14 -1.639126 0.405671 -0.842639 0.273583
2018-01-15 -0.209314 0.569439 1.809941 0.245962
2018-01-16 0.643041 -0.783864 0.149103 -0.803913
2018-01-17 1.118176 -0.526984 -1.349010 0.155028
2、通过字典创建
(1)使用默认行名
# 列可以是多种, 但是数量要正确
d = {
"A":1, # 列可以是一个数, 会应用到整个列
"B":pd.Timestamp("20180413"), # 列可以是时间戳, 会应用到整个列
"C":pd.Series(1, index=list(range(4)), dtype='float32'), # 列可以是一个序列
"D":np.array([3] * 4, dtype='int32'), # 列可以是ndarray
"F":"foo", # 列可以是字符串, 会应用到整列
"G":[1, 2, 3, 4] # 列可以是列表
}
df2 = pd.DataFrame(d)
print(df2)
# 可以使用dtypes查看每列类型
print(df2.dtypes)
# 结果
A B C D F G
0 1 2018-04-13 1.0 3 foo 1
1 1 2018-04-13 1.0 3 foo 2
2 1 2018-04-13 1.0 3 foo 3
3 1 2018-04-13 1.0 3 foo 4
A int64
B datetime64[ns]
C float32
D int32
F object
G int64
dtype: object
(2)使用自定义行名
d = {
"name":["Tom", "Bob", "Lili"], "age":[10, 20, 30]}
df = pd.DataFrame(d, index=["1", "2", "3"])
print(df)
# 结果
name age
1 Tom 10
2 Bob 20
3 Lili 30
三、查看数据
(一)查看头尾数据
d = {
"name":["a", "b", "c", "d", "e", "f", "g"],
"age":[10, 20, 30, 40, 50, 60, 70]
}
df = pd.DataFrame(d)
# 查看前几行, 默认值为5
print(df.head())
# 查看后几行, 默认值为5
print(df.tail(3))
# 结果
name age
0 a 10
1 b 20
2 c 30
3 d 40
4 e 50
name age
4