机器学习爱好者Pandaspython学习

Pandas基础教程

2019-04-18  本文已影响4人  陨星落云
In [14]: df
Out[14]:
   a   b   c   d message
0  1   2   3   4   hello
1  5   6   7   8   world
2  9  10  11  12     foo

In [15]: df.shape 
Out[15]: (3, 5)

In [17]: df.dtypes
Out[17]:
a           int64
b           int64
c           int64
d           int64
message    object
dtype: object

In [18]: df.ndim
Out[18]: 2

In [19]: df.index
Out[19]: RangeIndex(start=0, stop=3, step=1)

In [20]: df.columns
Out[20]: Index(['a', 'b', 'c', 'd', 'message'], dtype='object')

In [21]: df.values
Out[21]:
array([[1, 2, 3, 4, 'hello'],
       [5, 6, 7, 8, 'world'],
       [9, 10, 11, 12, 'foo']], dtype=object)

In [22]: df.head(2)
Out[22]:
   a  b  c  d message
0  1  2  3  4   hello
1  5  6  7  8   world

In [23]: df.tail(2)
Out[23]:
   a   b   c   d message
1  5   6   7   8   world
2  9  10  11  12     foo

In [24]: df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 5 columns):
a          3 non-null int64
b          3 non-null int64
c          3 non-null int64
d          3 non-null int64
message    3 non-null object
dtypes: int64(4), object(1)
memory usage: 200.0+ bytes

In [25]: df.describe()
Out[25]:
         a     b     c     d
count  3.0   3.0   3.0   3.0
mean   5.0   6.0   7.0   8.0
std    4.0   4.0   4.0   4.0
min    1.0   2.0   3.0   4.0
25%    3.0   4.0   5.0   6.0
50%    5.0   6.0   7.0   8.0
75%    7.0   8.0   9.0  10.0
max    9.0  10.0  11.0  12.0
In [109]: df = pd.DataFrame({'key': ['A', 'B', 'C', 'A', 'B', 'C'],'data': range(6)}, columns=['key', 'data'])

In [110]: df
Out[110]:
  key  data
0   A     0
1   B     1
2   C     2
3   A     3
4   B     4
5   C     5

In [114]: df.groupby('key')
Out[114]: <pandas.core.groupby.groupby.DataFrameGroupBy object at 0x00000262F8AE8240>

In [115]: df.groupby('key').sum()
Out[115]:
     data
key
A       3
B       5
C       7

DataFrameGroupBy对象常用的函数:

函数名 说明
.count() 统计非nan值的数量
.sum() 非nan值的和
.mean() 非nan值的平均数
.median() 非nan值的中位数
.std()、.var() 无偏(n-1)标准差和方差
.min() .max() 非nan值的最小值和最大值

数据缺失通常有两种情况:

一种就是空,None等,在pandas是NaN(和np.nan一样)。

另一种是我们让其为0,蓝色框中。

方法 说明
.dropna() 根据标签的值中是否存在缺失数据对轴标签进行过滤(删除),可通过阈值调节对缺失值的容忍度
.fillna() 用指定值或插值方法填充缺失数据
.isnull() 返回一个含有布尔值的对象,这些布尔值表示哪些值是缺失值NA
.notnull() isnull的否定式

在pandas中数据缺失处理方法

判断数据是否为NaN:pd.isnull(df),pd.notnull(df)

处理方式1:删除NaN所在的行列dropna (axis=0, how='any', inplace=False)

处理方式2:填充数据,t.fillna(t.mean()),t.fiallna(t.median()),t.fillna(0)

处理为0的数据:t[t==0]=np.nan

注意:当然并不是每次为0的数据都需要处理;计算平均值等情况,nan是不参与计算的,但是0会。

In [6]: df=pd.DataFrame([['Tom',np.nan,456.67,'M'],['Merty',34,4567.34,np.nan],['John',23,np.nan,'M'],['Joe',18,342.45,
   ...: 'F']],columns=['name','age','salary','gender'])

In [7]: df
Out[7]:
    name   age   salary gender
0    Tom   NaN   456.67      M
1  Merty  34.0  4567.34    NaN
2   John  23.0      NaN      M
3    Joe  18.0   342.45      F

In [8]: df.isnull()
Out[8]:
    name    age  salary  gender
0  False   True   False   False
1  False  False   False    True
2  False  False    True   False
3  False  False   False   False

In [9]: df.notnull()
Out[9]:
   name    age  salary  gender
0  True  False    True    True
1  True   True    True   False
2  True   True   False    True
3  True   True    True    True

In [12]: series=pd.Series([1,2,3,4,np.NaN,5])

In [13]: series.dropna()
Out[13]:
0    1.0
1    2.0
2    3.0
3    4.0
5    5.0
dtype: float64
    
In [19]: data
Out[19]:
     0    1    2
0  0.0  1.0  2.0
1  NaN  NaN  NaN
2  NaN  7.0  8.0

In [20]: data.dropna() #默认丢失只要含有缺失值的行
Out[20]:
     0    1    2
0  0.0  1.0  2.0

In [21]: data.dropna(how='all') #丢失全部为缺失值的行
Out[21]:
     0    1    2
0  0.0  1.0  2.0
2  NaN  7.0  8.0

In [23]: data
Out[23]:
     0    1    2   4
0  0.0  1.0  2.0 NaN
1  NaN  NaN  NaN NaN
2  NaN  7.0  8.0 NaN

In [24]: data.dropna(axis=1,how='all') #丢失全部为缺失值的列
Out[24]:
     0    1    2
0  0.0  1.0  2.0
1  NaN  NaN  NaN
2  NaN  7.0  8.0

In [25]: df=pd.DataFrame(np.random.randn(7,3))

In [26]: df.iloc[:4,1]=np.nan

In [27]: df.iloc[:2,2]=np.nan

In [28]: df
Out[28]:
          0         1         2
0 -0.299147       NaN       NaN
1  0.075411       NaN       NaN
2 -0.406294       NaN -1.472581
3 -1.224392       NaN  1.167611
4 -0.730027 -0.459401  0.275466
5  0.919381  0.107443 -2.359248
6 -1.193738 -0.336124  0.992585

In [29]: df.fillna(df.mean()) #取df的平均值填充
Out[29]:
          0         1         2
0 -0.299147 -0.229361 -0.279233
1  0.075411 -0.229361 -0.279233
2 -0.406294 -0.229361 -1.472581
3 -1.224392 -0.229361  1.167611
4 -0.730027 -0.459401  0.275466
5  0.919381  0.107443 -2.359248
6 -1.193738 -0.336124  0.992585

In [30]: df
Out[30]:
          0         1         2
0 -0.299147       NaN       NaN
1  0.075411       NaN       NaN
2 -0.406294       NaN -1.472581
3 -1.224392       NaN  1.167611
4 -0.730027 -0.459401  0.275466
5  0.919381  0.107443 -2.359248
6 -1.193738 -0.336124  0.992585

In [31]: df[1].fillna(df[1].median()) #取1一列的中位数填充该列
Out[31]:
0   -0.336124
1   -0.336124
2   -0.336124
3   -0.336124
4   -0.459401
5    0.107443
6   -0.336124
Name: 1, dtype: float64

r=\frac{\sum_{i=1}^{n}\left(x_{i}-\overline{x}\right)\left(y_{i}-\overline{y}\right)}{\sqrt{\sum_{i=1}^{n}\left(x_{i}-\overline{x}\right)^{2}} \sqrt{\sum_{i=1}^{n}\left(y_{i}-\overline{y}\right)^{2}}}

​ r取值范围[‐1,1]

​ 0.8‐1.0 极强相关;0.6‐0.8 强相关; 0.4‐0.6 中等程度相关; 0.2‐0.4 弱相关; 0.0‐0.2 极弱相关或无相关。

相关分析函数适用于Series和DataFrame类型

方法 说明
.cov() 计算协方差矩阵
.corr() 计算相关系数矩阵, Pearson、Spearman、Kendall等系数
  In [65]: hprice=pd.Series([3.04,22.93,11.22,22.55,12.33],index=['2010','2011','2012','2013','2014'])
  
  In [66]: m2=pd.Series([8.18,6.93,9.12,7.55,6.63],index=['2010','2011','2012','2013','2014'])
  
  In [67]: hprice.cov(m2)
  Out[67]: -3.88571
  
  In [68]: hprice.corr(m2)
  Out[68]: -0.46194948337869285

参考资料:

网址:

https://blog.csdn.net/qq_35318838/article/details/80564938

书籍:

《python数据科学手册》

《利用python进行数据分析》

《python科学计算》

视频:

《黑马程序员之数据分析》

《python数据分析与展示》

上一篇下一篇

猜你喜欢

热点阅读