1、为什么学习pandas
我们并不是不愿意学习新的知识,只是在学习之前我们更想知道学习他们能够帮助我们解决什么问题。——伟哥
numpy
虽然能够帮助我们处理数值,但是pandas
除了处理数值之外(基于numpy
),还能够帮助我们处理其他类型的数据(字符串、时间序列等等)
2、什么是pandas
pandas is an open source, BSD-licensed library providing high-performance, easy-to-use data structures and data analysis tools for the Python programming language.
译:pandas 是一个开源的、BSD 许可的库,为 Python 编程语言提供高性能、易于使用的数据结构和数据分析工具。
3、pandas的常用数据类型
- Series 一维,带标签数组(索引)
- DataFrame 二维,Series容器
4、pandas之Series创建
import pandas as pd
import numpy as np
import string
t = pd.Series(np.arange(10), index=list(string.ascii_uppercase[:10]))
print(t)
A 0
B 1
C 2
D 3
E 4
F 5
G 6
H 7
I 8
J 9
dtype: int32
测试一个小案例:
import pandas as pd
student = {"name": "xiaoming", "age": 18, "tel": 110}
t = pd.Series(student)
print(t)
name xiaoming
age 18
tel 110
dtype: object
再测试:
import pandas as pd
import string
a = {string.ascii_uppercase[i]: i for i in range(10)}
t = pd.Series(a, index=list(string.ascii_uppercase[5:15]))
print(t)
F 5.0
G 6.0
H 7.0
I 8.0
J 9.0
K NaN
L NaN
M NaN
N NaN
O NaN
dtype: float64
重新指定其他的索引之后,如果能对上,就取值,否则为NaN
注意:pandas会自动根据数据类型更改series的dtype类型
5、pandas之Series切片和索引
import pandas as pd
import numpy as np
import string
t = pd.Series(np.arange(10), index=list(string.ascii_uppercase[:10]))
print(t)
测试如下:
切片:直接传入start
, end
或者步长即可
索引:一个的时候直接传入序号或者 index
,多个的时候传入序号或者 index
的列表
6、pandas之Series的索引和值
对于一个陌生的series类型,我们如何知道他的索引和具体的值呢?
import pandas as pd
import numpy as np
import string
t = pd.Series(np.arange(10), index=list(string.ascii_uppercase[:10]))
print(t)
Series对象本质上由两个数组构成,一个数组构成对象的键(index,索引),一个数组构成对象的值( values),键→值
7、pandas之读取外部数据
现在假设我们有一个组关于狗的名字的统计数据,那么为了观察这组数据的情况,我们应该怎么做呢?
数据来源:https://www.kaggle.com/new-york-city/nyc-dog-names/data
import pandas as pd
# 直接使用pandas读取csv文件
test = pd.read_csv("./dog.csv")
print(test)
但是,还有一个问题:
对于数据库比如mysql或者mongodb中数据我们如何使用呢?
pd.read_sql(sql_sentence,connection)