Python数据分析基础
Series
是个定长的字典序列,有两个基本属性:index和value
import pandas as pd
from pandas import Series, DataFrame
复制代码x1 = Series([1,2,3,4])
x2 = Series(data=[1,2,3,4], index=['a', 'b', 'c', 'd'])
print(x1)
print(x2)
复制代码0 1
1 2
2 3
3 4
dtype: int64
a 1
b 2
c 3
d 4
dtype: int64
复制代码
x1 中的 index 采用的是默认值,x2 中 index 进行了指定。我们也可以采用字典的方式来创建 Series,比如:
d = {'a':1, 'b':2, 'c':3, 'd':4}
x3 = Series(d)
print(x3)
复制代码a 1
b 2
c 3
d 4
dtype: int64
复制代码
DataFrame
数据结构类似数据库表。
data = {'Chinese': [66, 95, 93, 90,80],'English': [65, 85, 92, 88, 90],'Math': [30, 98, 96, 77, 90]}
df1= DataFrame(data)
df2 = DataFrame(data, index=['ZhangFei', 'GuanYu', 'ZhaoYun', 'HuangZhong', 'DianWei'], columns=['English', 'Math', 'Chinese'])
print(df1)
print(df2)
复制代码Chinese English Math
0 66 65 30
1 95 85 98
2 93 92 96
3 90 88 77
4 80 90 90
English Math Chinese
ZhangFei 65 30 66
GuanYu 85 98 95
ZhaoYun 92 96 93
HuangZhong 88 77 90
DianWei 90 90 80
复制代码
引入一下外部的数据,并加入字段名,显示成表格
from sklearn.datasets import load_iris
iris=load_iris()
df_iris = DataFrame(iris.data, columns=['sepal_length', 'sepa_width', 'peta_length', 'peta_width'])
print(df_iris)
复制代码sepal_length sepa_width peta_length peta_width
0 5.1 3.5 1.4 0.2
1 4.9 3.0 1.4 0.2
2 4.7 3.2 1.3 0.2
3 4.6 3.1 1.5 0.2
4 5.0 3.6 1.4 0.2
5 5.4 3.9 1.7 0.4
6 4.6 3.4 1.4 0.3
7 5.0 3.4 1.5 0.2
8 4.4 2.9 1.4 0.2
9 4.9 3.1 1.5 0.1
10 5.4 3.7 1.5 0.2
11 4.8 3.4 1.6 0.2
12 4.8 3.0 1.4 0.1
13 4.3 3.0 1.1 0.1
14 5.8 4.0 1.2 0.2
15 5.7 4.4 1.5 0.4
16 5.4 3.9 1.3 0.4
17 5.1 3.5 1.4 0.3
18 5.7 3.8 1.7 0.3
19 5.1 3.8 1.5 0.3
20 5.4 3.4 1.7 0.2
21 5.1 3.7 1.5 0.4
22 4.6 3.6 1.0 0.2
23 5.1 3.3 1.7 0.5
24 4.8 3.4 1.9 0.2
25 5.0 3.0 1.6 0.2
26 5.0 3.4 1.6 0.4
27 5.2 3.5 1.5 0.2
28 5.2 3.4 1.4 0.2
29 4.7 3.2 1.6 0.2
.. ... ... ... ...
120 6.9 3.2 5.7 2.3
121 5.6 2.8 4.9 2.0
122 7.7 2.8 6.7 2.0
123 6.3 2.7 4.9 1.8
124 6.7 3.3 5.7 2.1
125 7.2 3.2 6.0 1.8
126 6.2 2.8 4.8 1.8
127 6.1 3.0 4.9 1.8
128 6.4 2.8 5.6 2.1
129 7.2 3.0 5.8 1.6
130 7.4 2.8 6.1 1.9
131 7.9 3.8 6.4 2.0
132 6.4 2.8 5.6 2.2
133 6.3 2.8 5.1 1.5
134 6.1 2.6 5.6 1.4
135 7.7 3.0 6.1 2.3
136 6.3 3.4 5.6 2.4
137 6.4 3.1 5.5 1.8
138 6.0 3.0 4.8 1.8
139 6.9 3.1 5.4 2.1
140 6.7 3.1 5.6 2.4
141 6.9 3.1 5.1 2.3
142 5.8 2.7 5.1 1.9
143 6.8 3.2 5.9 2.3
144 6.7 3.3 5.7 2.5
145 6.7 3.0 5.2 2.3
146 6.3 2.5 5.0 1.9
147 6.5 3.0 5.2 2.0
148 6.2 3.4 5.4 2.3
149 5.9 3.0 5.1 1.8
[150 rows x 4 columns]
复制代码
数据的集中趋势
pandas可以显示关于数据的简短统计摘要
df.mean():返回所有列的均值
df.corr():返回列与列之间的相关系数
df.count():返回每一列中的非空值的个数
df.max():返回每一列的最大值
df.min():返回每一列的最小值
df.median():返回每一列的中位数
df.std():返回每一列的标准差
iris_desc = df_iris.describe()
print(iris_desc)
复制代码sepal_length sepa_width peta_length peta_width
count 150.000000 150.000000 150.000000 150.000000
mean 5.843333 3.054000 3.758667 1.198667
std 0.828066 0.433594 1.764420 0.763161
min 4.300000 2.000000 1.000000 0.100000
25% 5.100000 2.800000 1.600000 0.300000
50% 5.800000 3.000000 4.350000 1.300000
75% 6.400000 3.300000 5.100000 1.800000
max 7.900000 4.400000 6.900000 2.500000
复制代码
#中位数
df_iris.median()
复制代码sepal_length 5.80
sepa_width 3.00
peta_length 4.35
peta_width 1.30
dtype: float64
复制代码
#返回众数
df_iris.mode()
复制代码
sepal_length
sepa_width
peta_length
peta_width
0
5.0
3.0
1.5
0.2
数据的离中趋势
#方差
df_iris.var()
复制代码sepal_length 0.685694
sepa_width 0.188004
peta_length 3.113179
peta_width 0.582414
dtype: float64
复制代码
#标准差
df_iris.std()
复制代码sepal_length 0.828066
sepa_width 0.433594
peta_length 1.764420
peta_width 0.763161
dtype: float64
复制代码
#极差
df_iris.max()-df_iris.min()
复制代码sepal_length 3.6
sepa_width 2.4
peta_length 5.9
peta_width 2.4
dtype: float64
复制代码
#平均偏差
df_iris.mad()
复制代码sepal_length 0.687556
sepa_width 0.333093
peta_length 1.561920
peta_width 0.658933
dtype: float64
复制代码
#变异系数
df_iris.std()/df_iris.mean()
复制代码sepal_length 0.141711
sepa_width 0.141976
peta_length 0.469427
peta_width 0.636675
dtype: float64
复制代码
#四分位差
iris_desc.loc['75%']-iris_desc.loc['25%']
复制代码sepal_length 1.3
sepa_width 0.5
peta_length 3.5
peta_width 1.5
dtype: float64
复制代码
#偏态(偏度)系数(skew):
iris_desc.skew()
复制代码sepal_length 2.819292
sepa_width 2.825707
peta_length 2.820098
peta_width 2.827191
dtype: float64
复制代码
#峰态系数
iris_desc.kurt()
复制代码sepal_length 7.961842
sepa_width 7.988527
peta_length 7.964526
peta_width 7.994746
dtype: float64
复制代码