处理数值型以外的其他类型数据。
常用类: Series,DataFrame
是一种类似于一维数组的对象,有两部分组成:
values:一组数据(ndarray类型)
index:相关的数据索引标签
Series的创建:
a = Series(data=[1, 2, 3, "Four"])
b = Series(data=np.random.randint(0, 100, size=(3, )))
// 注:用numpy创建时数组必须为一维
a = Series(data=[1, 2, 3, "Four"], index=['a', 'b', 'c', 'd'])
dic = {'语文': 100, '数学': 99, '理综': 250}
c = Series(data=dic)
Series的索引和切片:
c.语文
// 100
c[0:2]
//
语文 100
数学 99
dtype: int64
Series常用属性:
Series常用方法:
a1 = Series(data=[1, 2, 3], index=['a', 'b', 'c'])
a2 = Series(data=[1, 2, 3], index=['a', 'd', 'c'])
a = a1 + a2
//
a 2.0
b NaN
c 6.0
d NaN
dtype: float64
a.isnull()
//
a False
b True
c False
d True
dtype: bool
是一个【表格型】数据结构,DataFrame由按一定顺序排列的多列数据组成。设计初衷是将Series 的使用场景从一维拓展到多维。
既有 行索引index又有 列索引columns,值values
DataFrame的创建:
df = DataFrame(data=np.random.randint(0, 100, size=(6, 4)))
dic = {'name': ['zhangsan', 'lisi', 'wanglaowu'], 'salary': [1000, 2000, 3000]}
df = DataFrame(data=dic, index=['a', 'b', 'c'])
//
name salary
a zhangsan 1000
b lisi 2000
c wanglaowu 3000
DataFrame属性:
示例创建成绩表:
dic = {'张三': [150, 150, 150, 300], '李四': [100, 100, 100, 100]}
df = DataFrame(data=dic, index=['语文', '数学', '英语', '理综'])
//
张三 李四
语文 150 0
数学 150 0
英语 150 0
理综 300 0
DataFrame索引操作:
df = DataFrame(data=np.random.randint(0, 100, size=(6, 4)), columns=['a', 'b', 'c', 'd'])
//
a b c d
0 45 54 25 94
1 85 22 16 65
2 14 23 74 54
3 96 33 45 61
4 80 6 1 19
5 67 87 19 7
df['a']
//
0 45
1 85
2 14
3 96
4 80
5 67
Name: a, dtype: int32
df['a', 'c']
df.iloc[0]
//
a 45
b 54
c 25
d 94
Name: 0, dtype: int32
df.iloc[[0, 3, 5]]
//
a b c d
0 45 54 25 94
3 96 33 45 61
5 67 87 19 7
df.iloc[0, 'a']
df.iloc[0, 2]
df.loc[0, 'a']
df.loc[0, 2]
df.iloc[[0, 3, 5], 2]
//
0 25
3 45
5 19
Name: c, dtype: int32
DataFrame切片操作:
df[0:2]
//
a b c d
0 45 54 25 94
1 85 22 16 65
df.iloc[:, 0:2]
//
a b
0 45 54
1 85 22
2 14 23
3 96 33
4 80 6
5 67 87
DataFrame运算:同Series
示例:
dic = {'张三': [150, 150, 150, 300], '李四': [0, 0, 0, 0]}
df = DataFrame(data=dic, index=['语文', '数学', '英语', '理综'])
qz = df
qm =df
mean = (qz + qm) / 2
//
张三 李四
语文 150.0 0.0
数学 150.0 0.0
英语 150.0 0.0
理综 300.0 0.0
zs = qz.loc['数学', '张三']
// 150
qm['李四'] += 100
//
张三 李四
语文 150.0 100.0
数学 150.0 100.0
英语 150.0 100.0
理综 300.0 100.0
qz += 10
//
张三 李四
语文 160 10
数学 160 10
英语 160 10
理综 310 10
时间数据类型的转换: pd.to_datetime()
dic = {'time': ['2010-10-10', '2011-11-20', '2020-01-10'], 'temp': [33, 31, 30]}
df = DataFrame(data=dic)
df['time'] = pd.to_datetime(df['time'])
//
time datetime64[ns]
将某一列作为某一列的行索引: set_index()
df.set_index('time')
//
temp
time
2010-10-10 33
2011-11-20 31
2020-01-10 30
Original: https://blog.csdn.net/qq_40202164/article/details/125548247
Author: GODamnbit
Title: Python数据分析三剑客之Pandas
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/676802/
转载文章受原作者版权保护。转载请注明原作者出处!