DataFrame基础
2020-11-20 本文已影响0人
Chaweys
'''
什么是DataFrame?
DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值,字符串,布尔值等)。
DataFrame既有行索引也有列索引,它可以被看做由series组成的字典(共用同一个索引)。
可以看作是一张表。
'''
#coding=utf-8
import pandas as pd
import numpy as np
#创建DataFrame(两种方式)
#方式一:np.array()创建
arr=np.array([[1,2,3],[4,5,6],[7,8,9]])
df = pd.DataFrame(arr)
print(df)
'''
0 1 2
0 1 2 3
1 4 5 6
2 7 8 9
'''
#指定行索引和列索引
df = pd.DataFrame(arr,index=['a','b','c'],columns=['d','e','f'])
print(df)
'''
d e f
a 1 2 3
b 4 5 6
c 7 8 9
'''
#方式二:字典方式创建
dicts={"state":{0:"ohio",1:"ohio",2:"ohio",3:"nevada",4:"nevada"},
"year":{0:2000,1:2001,2:2002,3:2001,4:2002},
"pop":{0:1.5,1:1.7,2:3.6,3:2.4,4:2.9}
}
df2 = pd.DataFrame(dicts)
print(df2)
'''
pop state year
0 1.5 ohio 2000
1 1.7 ohio 2001
2 3.6 ohio 2002
3 2.4 nevada 2001
4 2.9 nevada 2002
'''
#DataFrame查看数据head()查看头数据
print(df2.head())
'''
head()未传参,默认查看前五行
pop state year
0 1.5 ohio 2000
1 1.7 ohio 2001
2 3.6 ohio 2002
3 2.4 nevada 2001
4 2.9 nevada 2002
'''
print(df2.head(2))
'''
head(2)查看前两行
pop state year
0 1.5 ohio 2000
1 1.7 ohio 2001
'''
print(df2.head(3))
'''
head(3)查看前三行
pop state year
0 1.5 ohio 2000
1 1.7 ohio 2001
2 3.6 ohio 2002
'''
#DataFrame查看数据tail()查看尾数据
print(df2.tail())
'''
tail()未传参,默认查看所有
pop state year
0 1.5 ohio 2000
1 1.7 ohio 2001
2 3.6 ohio 2002
3 2.4 nevada 2001
4 2.9 nevada 2002
'''
print(df2.tail(2))
'''
tail(2)查看尾部两行
pop state year
3 2.4 nevada 2001
4 2.9 nevada 2002
'''
print(df2.tail(3))
'''
tail(3)查看尾部三行
pop state year
2 3.6 ohio 2002
3 2.4 nevada 2001
4 2.9 nevada 2002
'''
print(df2.info())
'''
info()查看数据结构即存储信息
<class 'pandas.core.frame.DataFrame'>
Int64Index: 5 entries, 0 to 4
Data columns (total 3 columns):
pop 5 non-null float64
state 5 non-null object
year 5 non-null int64
dtypes: float64(1), int64(1), object(1)
memory usage: 160.0+ bytes
None
'''
#describe()查看数据按列的方式的统计结果信息
print(df2.describe())
'''
describe()查看数据按列的方式的统计结果信息
pop year
count 5.000000 5.00000 总数
mean 2.420000 2001.20000 平均值
std 0.864292 0.83666 标准差
min 1.500000 2000.00000 最小值
25% 1.700000 2001.00000 分位数(有25%的数据小于该值)
50% 2.400000 2001.00000 分位数(有50%的数据小于该值)
75% 2.900000 2002.00000 分位数(有75%的数据小于该值)
max 3.600000 2002.00000 最大值
'''
#mean()求每列的平均值
print(df2.mean())
'''
pop 2.42
year 2001.20
dtype: float64
'''
#median()求得每列的中位数
print(df2.median())
'''
pop 2.4
year 2001.0
dtype: float64
'''
#df2.index获取行级索引
print(df2.index)
#结果:Int64Index([0, 1, 2, 3, 4], dtype='int64')
#df2.columns获取列级索引
print(df2.columns)
#结果;Index(['pop', 'state', 'year'], dtype='object')
#DataFrame的转置:行和列进行转置
print(df2.T)
'''
0 1 2 3 4
pop 1.5 1.7 3.6 2.4 2.9
state ohio ohio ohio nevada nevada
year 2000 2001 2002 2001 2002
'''
#DataFrame排序:sort_index(),按照索引来排序
#sort_index(axis=0)按照行索引排序0 1 2 3 4
print(df2)
print(df2.sort_index(axis=0))
print(df2.sort_index(axis=0,ascending=False)) #降序
'''
df2:
pop state year
0 1.5 ohio 2000
1 1.7 ohio 2001
2 3.6 ohio 2002
3 2.4 nevada 2001
4 2.9 nevada 2002
sort_index(axis=0)
pop state year
0 1.5 ohio 2000
1 1.7 ohio 2001
2 3.6 ohio 2002
3 2.4 nevada 2001
4 2.9 nevada 2002
sort_index(axis=0,ascending=False
4 2.9 nevada 2002
3 2.4 nevada 2001
2 3.6 ohio 2002
1 1.7 ohio 2001
0 1.5 ohio 2000
'''
#sort_index(axis=1)按照列索引排序
print(df2.sort_index(axis=1))
print(df2.sort_index(axis=1,ascending=False)) #降序排序
'''
sort_index(axis=1)
pop state year
0 1.5 ohio 2000
1 1.7 ohio 2001
2 3.6 ohio 2002
3 2.4 nevada 2001
4 2.9 nevada 2002
sort_index(axis=1,ascending=False)
year state pop
0 2000 ohio 1.5
1 2001 ohio 1.7
2 2002 ohio 3.6
3 2001 nevada 2.4
4 2002 nevada 2.9
'''