Python数据分析pandas真入门(二)-----基础学习

0. 前言

前面我们经历了十分钟学废pandas,相信大家一定都学废了(狗头保命),下面我们开始学习pandas基础知识。

1. Series

import pandas as pd
import numpy as np
# Series
s = pd.Series([1, 3, 6, np.nan, 44, 1])
print(s)
# 默认index从0开始,如果想要按照自己的索引设置,则修改index参数,如:index=[3, 4, 3, 7, 8, 9]
0     1.0
1     3.0
2     6.0
3     NaN
4    44.0
5     1.0
dtype: float64

2.DataFrame

2.1 DataFrame的简单运用

# dataFrame
dates = pd.date_range('2018-08-19', periods=6)
# dates = pd.date_range('2018-08-19', '2018-08-24') # 起始、结束、与上述代码等价
'''
numpy.random.randn(d0, d1,.... ,dn)是从标准正太分布中返回一个或多个样本值。
numpy.random.rand(d0, d1,...,dn)的随机样本位于[0,1]中
(6, 4)表示六行四列数据
'''
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=['a', 'b', 'c','d'])
print(df)
# DataFrame既有行索引也有列索引,它可以被看作由Series组成的大字典
                   a         b         c         d
2018-08-19 -0.193563  0.774822  0.791951 -0.001489
2018-08-20  1.383536  0.013180 -1.013866  0.277929
2018-08-21  0.194067 -0.112442  0.537806  0.775922
2018-08-22 -1.257753 -1.241477  1.099022  0.487283
2018-08-23 -0.383184 -0.299835 -1.212893  0.884345
2018-08-24  0.691404 -1.207610 -0.168567  0.642692
print(df['b'])
2018-08-19    0.774822
2018-08-20    0.013180
2018-08-21   -0.112442
2018-08-22   -1.241477
2018-08-23   -0.299835
2018-08-24   -1.207610
Freq: D, Name: b, dtype: float64
# 未指定行标签和列标签的数据
df1 = pd.DataFrame(np.arange(12).reshape(3,4))
print(df1)
   0  1   2   3
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11
# 另一种方式,字典方式,健为列索引
df2 = pd.DataFrame({
   
    'A': [1, 2, 3, 4],
    'B': pd.Timestamp('20180819'),    
    'C': pd.Series([1, 6, 9, 10], dtype='float32'),
    'D': np.array([3] * 4, dtype='int32'),
    'E': pd.Categorical(['test', 'train', 'test', 'train']),
    'F': 'foo'
})
print(df2)
   A          B     C  D      E    F
0  1 2018-08-19   1.0  3   test  foo
1  2 2018-08-19   6.0  3  train  foo
2  3 2018-08-19   9.0  3   test  foo
3  4 2018-08-19  10.0  3  train  foo
print(df2.index)
RangeIndex(start=0, stop=4, step=1)
print(df2.columns)
Index(['A', 'B', 'C', 'D', 'E', 'F'], dtype='object')
print(df2.values)
[[1 Timestamp('2018-08-19 00:00:00') 1.0 3 'test' 'foo']
 [2 Timestamp('2018-08-19 00:00:00') 6.0 3 'train' 'foo']
 [3 Timestamp('2018-08-19 00:00:00') 9.0 3 'test' 'foo']
 [4 Timestamp('2018-08-19 00:00:00') 10.0 3 'train' 'foo']]
# 数据总结。
# count:数出有该列有多少行数据
# mean:该列的平均值
# std:一列数据的均方差;(方差的算术平方根,反映一个数据集的离散程度:越大,数据间的差异越大,数据集中数据的离散程度越高;越小,数据间的大小差异越小,数据集中的数据离散程度越低)
# min:最小值
# 25%:等于该样本中所有数值由小到大排列后第25%的数字
# 50%:等于该样本中所有数值由小到大排列后第50%的数字
# 75%:等于该样本中所有数值由小到大排列后第75%的数字。
'''
首先确定四分位数的位置:
Q1的位置= (n+1) × 0.25
Q2的位置= (n+1) × 0.5
Q3的位置= (n+1) × 0.75
对于四分位数的确定,有不同的方法,另外一种方法基于N-1 基础。即
Q1的位置=1+(n-1)x 0.25
Q2的位置=1+(n-1)x 0.5
Q3的位置=1+(n-1)x 0.75
实例1:
数据总量: 6, 47, 49, 15, 42, 41, 7, 39, 43, 40, 36
由小到大排列的结果: 6, 7, 15, 36, 39, 40, 41, 42, 43, 47, 49,一共11项
Q1 的位置=(11+1) × 0.25=3, Q2 的位置=(11+1)× 0.5=6, Q3的位置=(11+1) × 0.75=9,故
Q1 = 15,
Q2 = 40,
Q3 = 43
实例2
数据总量: 7, 15, 36, 39, 40, 41,一共6项
数列项为偶数项时,四分位数Q2为该组数列的中数,
(n+1)/4= 7/4 =1.75,Q1在第一与第二个数字之间,
3(n+1)/4= 21/4 =5.25, Q3在第五与第六个数字之间,
Q1 = 0.75*15+0.25*7 = 13,
Q2 = (36+39)/2= 37.5,
Q3 = 0.25*41+0.75*40 = 40.25.
'''
# max:最大值
print(df2.describe())
              A          C    D
count  4.000000   4.000000  4.0
mean   2.500000   6.500000  3.0
std    1.290994   4.041452  0.0
min    1.000000   1.000000  3.0
25%    1.750000   4.750000  3.0
50%    2.500000   7.500000  3.0
75%    3.250000   9.250000  3.0
max    4.000000  10.000000  3.0
# 翻转数据
print(df2.T)
# print(np.transpose(df2))等价于上述操作
                     0                    1                    2  \
A                    1                    2                    3   
B  2018-08-19 00:00:00  2018-08-19 00:00:00  2018-08-19 00:00:00   
C                    1                    6                    9   
D                    3                    3                    3   
E                 test                train                 test   
F                  foo                  foo                  foo   

                     3  
A                    4  
B  2018-08-19 00:00:00  
C                   10  
D                    3  
E                train  
F                  foo  
'''
axis=1表示行
axis=0表示列
默认ascenging(升序)为True
ascending=True表示升序,ascending=False表示降序
下面两行分别表示按行升序和按行降序
'''
print(df2.sort_index(axis=1, ascending=True))
   A          B     C  D      E    F
0  1 2018-08-19   1.0  3   test  foo
1  2 2018-08-19   6.0  3  train  foo
2  3 2018-08-19   9.0  3   test  foo
3  4 2018-08-19  10.0  3  train  foo
print(df2.sort_index(axis=1, ascending=False))
     F      E  D     C          B  A
0  foo   test  3   1.0 2018-08-19  1
1  foo  train  3   6.0 2018-08-19  2
2  foo   test  3   9.0 2018-08-19  3
3  foo  train  3  10.0 2018-08-19  4
# 表示按列排序与降序排序
print(df2.sort_index(axis=0, ascending=False))
   A          B     C  D      E    F
3  4 2018-08-19  10.0  3  train  foo
2  3 2018-08-19   9.0  3   test  foo
1  2 2018-08-19   6.0  3  train  foo
0  1 2018-08-19   1.0  3   test  foo
print(df2.sort_index(axis=0, ascending=True))
   A          B     C  D      E    F
0  1 2018-08-19   1.0  3   test  foo
1  2 2018-08-19   6.0  3  train  foo
2  3 2018-08-19   9.0  3   test  foo
3  4 2018-08-19  10.0  3  train  foo
# 对特定列数值排序
# 表示对C列降序排序
print(df2.sort_values(by='C', ascending=False))
   A          B     C  D      E    F
3  4 2018-08-19  10.0  3  train  foo
2  3 2018-08-19   9.0  3   test  foo
1  2 2018-08-19   6.0  3  train  foo
0  1 2018-08-19   1.0  3   test  foo

3. 筛选

3.1 实战筛选

import pandas as pd
import numpy as np
dates = pd.date_range('20180819', periods=6)
df = pd.DataFrame(np.arange(24).reshape((6, 4)), index=dates, columns=['A', 'B', 'C', 'D'])
print(df)
             A   B   C   D
2018-08-19   0   1   2   3
2018-08-20   4   5   6   7
2018-08-21   8   9  10  11
2018-08-22  12  13  14  15
2018-08-23  16  17  18  19
2018-08-24  20  21  22  23
# 检索A列
print(df['A'])
2018-08-19     0
2018-08-20     4
2018-08-21     8
2018-08-22    12
2018-08-23    16
2018-08-24    20
Freq: D, Name: A, dtype: int32
print(df.A)
2018-08-19     0
2018-08-20     4
2018-08-21     8
2018-08-22    12
2018-08-23    16
2018-08-24    20
Freq: D, Name: A, dtype: int32
# 选择跨越多行或多列
# 选取前三行
print(df[0:3])
            A  B   C   D
2018-08-19  0  1   2   3
2018-08-20  4  5   6   7
2018-08-21  8  9  10  11
print(df['2018-08-19': '2018-08-21'])
            A  B   C   D
2018-08-19  0  1   2   3
2018-08-20  4  5   6   7
2018-08-21  8  9  10  11
# 根据标签选择数据
# 获取特定行或列
# 指定行数据
print(df.loc['20180819'])
A    0
B    1
C    2
D    3
Name: 2018-08-19 00:00:00, dtype: int32
# 指定列
# 两种方式
print(df.loc[:, 'A':'B'])
             A   B
2018-08-19   0   1
2018-08-20   4   5
2018-08-21   8   9
2018-08-22  12  13
2018-08-23  16  17
2018-08-24  20  21
print(df.loc[:, ['A', 'B']])
             A   B
2018-08-19   0   1
2018-08-20   4   5
2018-08-21   8   9
2018-08-22  12  13
2018-08-23  16  17
2018-08-24  20  21
# 行与列同时检索
print(df.loc['20180819', ['A', 'B']])
A    0
B    1
Name: 2018-08-19 00:00:00, dtype: int32
# 根据序列iloc
# 获取特定位置的值
print(df.iloc[3, 1])
13
print(df.iloc[3:5, 
  • 11
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 21
    评论
### 回答1: pandas-official-tut-zh epub是指Pandas官方教程的中文电子书格式。Pandas是一个强大的数据分析和处理库,被广泛应用于数据科学和数据分析领域。Pandas官方教程提供了详细的指导和示例,帮助用户学习和使用Pandas库。 这本Pandas官方教程的中文电子书以epub格式提供,这意味着我们可以在支持epub格式的电子书阅读器或软件中阅读它。epub格式是一种开放的电子书标准,可以自由地在各种平台上阅读,如电脑、平板电脑、智能手机等。使用epub格式的好处是,它可以根据设备的屏幕尺寸和用户的设置自动调整页面布局和字体大小,提供更好的阅读体验。 这本教程的目标是帮助读者从零开始学习Pandas,并逐步深入了解其功能和用法。它提供了丰富的示例代码和实践演练,以帮助读者掌握Pandas的各种技术和技巧。教程涵盖了Pandas的基本数据结构,如Series和DataFrame,以及它们的索引、切片、过滤、排序等操作。此外,还介绍了Pandas的数据清洗、处理缺失值、数据合并、分组聚合等高级技术。 这本教程的中文版本使更多母语为中文的读者能够更轻松地学习和理解Pandas的概念和功能。epub格式的电子书具有良好的可读性和易于导航的特点,读者可以根据自己的需求和节奏进行学习,随时随地获取所需的知识。 总之,pandas-official-tut-zh epub是一本Pandas官方教程的中文电子书,提供了全面且易于理解的Pandas学习资源,可帮助读者入门并熟练使用该库。无论是初学者还是有经验的数据科学家,都可以从中受益,并将其应用于实际的数据分析项目中。 ### 回答2: pandas-official-tut-zh epub是一本关于pandas库的官方指南的电子书。Pandas是一个强大的数据分析工具,它使用Python编程语言开发。这本电子书提供了从基础概念到高级用法的全面介绍,将帮助读者掌握该库的各种功能和技巧。 该电子书以易于理解和直观的方式解释了pandas库的核心概念,如数据结构、索引和选择、数据聚合和生成等。读者可以通过电子书学习如何使用pandas来处理、清洗和分析各种类型的数据,包括结构化数据、时间序列数据和文本数据。 电子书的内容结构清晰,各章节之间有明确的连贯性,使读者可以系统地学习和理解pandas库的功能和用法。除了基本的数据操作,该电子书还介绍了一些高级特性,如数据合并、重塑和透视等,以及与其他Python工具库的集成。 pandas-official-tut-zh epub不仅提供了理论知识,还包含了丰富的实例代码和可运行的示例,读者可以通过这些实例更深入地理解和运用pandas库。此外,该电子书还提供了一些实际的案例研究,展示了pandas实世界中的应用。 总之,pandas-official-tut-zh epub是一本非常有价值的电子书,适合对数据处理和分析感兴趣的读者。无论是初学者还是有一定经验的开发者,都可以从该电子书中获得关于pandas库的全面指导和实用技巧。 ### 回答3: pandas-official-tut-zh epub是一个关于Python数据分析Pandas的中文官方教程的电子书文件。Pandas是一个强大的数据处理和分析工具,可用于处理和操作大型数据集。 首先,这本电子书是官方教程,意味着内容是由Pandas的开发团队编写的,可以保证信息的准确性和可靠性。它提供了详细的指导和示例,帮助读者了解Pandas的基本功能和高级技术。 这本教程以epub格式提供,这意味着它可以在各种电子设备上进行阅读,如电脑、平板电脑和智能手机。由于epub格式具有自适应屏幕大小和排版的优势,因此读者可以在任何设备上获得良好的阅读体验。 该教程分为多个章节,从介绍Pandas的基本概念和数据结构开始,逐步深入讲解Pandas的应用和高级功能。它涵盖了数据清洗、转换、聚合、合并等方面的常见任务,以及时间序列和数据可视化等更高级的主题。 读者可以通过学习这本教程来掌握Pandas的核心概念和操作技巧,从而更有效地进行数据分析和处理。这对于数据科学家、数据分析师和Python开发者来说都是非常有价值的资源。 总而言之,pandas-official-tut-zh epub是一本官方编写的关于Python数据分析Pandas的中文教程电子书,为读者提供了全面而系统的学习资源,帮助他们掌握Pandas的各种功能和技术。无论是初学者还是有经验的用户都可以从中受益,并且它的epub格式使得阅读更加方便和灵活。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值