Python数据分析语法练习

Python数据分析常用语法

一行代码定义List

number = [1,2,3,4,5]
double = []
for n in number:
    if n % 2 == 0:
        double.append(n * 2)
double
[4, 8]
#等价于上面
number = [1,2,3,4,5]
double = [n*2 for n in number if n % 2 == 0]
double
[4, 8]

Lambda表达式:匿名函数

third = lambda x : x * 3
third(5)
15

Map函数:对列表每个元素执行某种操作并用list转换为新列表

a = [1,2,3,4]
a_2 = list(map(lambda x : x ** 2,a))
a_2
[1, 4, 9, 16]

Filter函数:过滤函数,接受一个列表和一个规则,返回符合条件的子列表

b = [1,2,3,4]
b_2 = list(filter(lambda x : x >= 2,b))
b_2
[2, 3, 4]

np.arange函数:返回给定步长的等差列表,参数依次为开始值、结束值、步长,满足左闭右开

#numpy库下使用
import numpy as np
np.arange(3,9,3)
array([3, 6])

np.linspace函数:指定数目均匀分割区间,左右均为闭区间

#numpy库下使用
import numpy as np
np.linspace(2.0 ,10.0 ,num = 3)    #num可省略,共分成3个点,即3-1 = 2个区间
array([ 2.,  6., 10.])

Axis轴:处理列,设置为1;处理行,设置为0。因为df.shape返回的元组为(rows,columns)

#在pandas.DataFrame中使用,注意大小写
import pandas as pd
score = pd.DataFrame({
    '语文':[85,70,20,60],
    '数学':[60,80,90,30],
    '英语':[88,77,55,66]
})
score
数学英语语文
0608885
1807770
2905520
3306660
#删除某列
score.drop('语文',axis = 1)
数学英语
06088
18077
29055
33066
#删除某行
score.drop(0 ,axis = 0)
数学英语语文
1807770
2905520
3306660

pd.concat函数:连接多个dataframe,指定axis的值可在下面拼接或右侧拼接

import pandas as pd
class_1 = pd.DataFrame({
    '姓名':['李','张','赵'],
    '语文':[85,70,60],
    '数学':[62,80,92]
})
class_2 = pd.DataFrame({
    '姓名':['钟','陈','匡'],
    '语文':[77,68,90],
    '数学':[82,72,58]
})
# pd.concat([class_1,class_2])   #默认在下面拼接,按行处理,等价于下面
pd.concat([class_1,class_2],axis = 0)    #按行拼接
姓名数学语文
06285
18070
29260
08277
17268
25890
pd.concat([class_1,class_2],axis = 1)   #按列拼接
姓名数学语文姓名数学语文
062858277
180707268
292605890

pd.merge函数:连接有公共列的dataframe,按列拼接在右边

import pandas as pd
class_1 = pd.DataFrame({
    '姓名':['李','张','赵'],
    '语文':[85,70,60],
    '数学':[62,80,92]
})
class_2 = pd.DataFrame({
    '姓名':['李','张','赵'],
    '英语':[77,68,90],
    '物理':[82,72,58]
})
pd.merge(class_1, class_2, on = ['姓名'])    #按列拼接,参数on为公共列,为列表格式
姓名数学语文物理英语
062858277
180707268
292605890

how参数解释:控制参照项。left、right分别按本边操作、inner是取交集,outer取并集。

import pandas as pd
left = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],
                      'key2': ['K0', 'K1', 'K0', 'K1'],
                         'A': ['A0', 'A1', 'A2', 'A3'],
                         'B': ['B0', 'B1', 'B2', 'B3']})

right = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
                      'key2': ['K0', 'K0', 'K0', 'K0'],
                         'C': ['C0', 'C1', 'C2', 'C3'],
                         'D': ['D0', 'D1', 'D2', 'D3']})
print(left)
print(right)
pd.merge(left, right)   #默认按how='inner'操作,取公共列'key1'和'key2'的交集
    A   B key1 key2
0  A0  B0   K0   K0
1  A1  B1   K0   K1
2  A2  B2   K1   K0
3  A3  B3   K2   K1
    C   D key1 key2
0  C0  D0   K0   K0
1  C1  D1   K1   K0
2  C2  D2   K1   K0
3  C3  D3   K2   K0
ABkey1key2CD
0A0B0K0K0C0D0
1A2B2K1K0C1D1
2A2B2K1K0C2D2
pd.merge(left, right, how='left', on=['key1', 'key2'])   #以左边为控制项
ABkey1key2CD
0A0B0K0K0C0D0
1A1B1K0K1NaNNaN
2A2B2K1K0C1D1
3A2B2K1K0C2D2
4A3B3K2K1NaNNaN
pd.merge(left, right, how='right', on=['key1', 'key2'])   #以右边为控制项
ABkey1key2CD
0A0B0K0K0C0D0
1A2B2K1K0C1D1
2A2B2K1K0C2D2
3NaNNaNK2K0C3D3
pd.merge(left, right, how='inner', on=['key1', 'key2'])   #取交集
ABkey1key2CD
0A0B0K0K0C0D0
1A2B2K1K0C1D1
2A2B2K1K0C2D2
pd.merge(left, right, how='outer', on=['key1', 'key2'])   #取并集
ABkey1key2CD
0A0B0K0K0C0D0
1A1B1K0K1NaNNaN
2A2B2K1K0C1D1
3A2B2K1K0C2D2
4A3B3K2K1NaNNaN
5NaNNaNK2K0C3D3

Join函数:按相同的列名或行名合并两个dataframe

  • 只要两个表列名不同,不加任何参数就可以直接用。
  • 如果两个表有重复的列名,需指定lsuffix, rsuffix参数。
  • 其中参数的意义与merge方法基本相同,只是join方法默认为左外连接
import pandas as pd
left = pd.DataFrame({'key1': ['K0', 'K0', 'K1'],
                         'A': ['A0', 'A1', 'A3']
                    })

right = pd.DataFrame({'key2': ['K0', 'K1', 'K2'],
                         'C': ['C0', 'C1', 'C2']
                        })
print(left)
print(right)
left.join(right)    #只要两个表列名不同,不加任何参数就可以直接用。
    A key1
0  A0   K0
1  A1   K0
2  A3   K1
    C key2
0  C0   K0
1  C1   K1
2  C2   K2
Akey1Ckey2
0A0K0C0K0
1A1K0C1K1
2A3K1C2K2
import pandas as pd
left = pd.DataFrame({'key1': ['K0', 'K0', 'K1'],
                         'A': ['A0', 'A1', 'A3']
                    })

right = pd.DataFrame({'key1': ['K0', 'K1', 'K2'],
                         'C': ['C0', 'C1', 'C2']
                        })
print(left)
print(right)
left.join(right,lsuffix = '_left', rsuffix = '_right')    #如果两个表有重复的列名,需指定lsuffix, rsuffix参数。把左右两边列名格式变换
    A key1
0  A0   K0
1  A1   K0
2  A3   K1
    C key1
0  C0   K0
1  C1   K1
2  C2   K2
Akey1_leftCkey1_right
0A0K0C0K0
1A1K0C1K1
2A3K1C2K2

pd.apply函数:为series设计,可将一个函数应用于指定轴(行或列)上的每一个元素

import pandas as pd
df = pd.DataFrame([[4,9]]*3,columns = ['A','B'])
df
AB
049
149
249
import numpy as np
df.apply(np.sqrt)
AB
02.03.0
12.03.0
22.03.0
df.apply(np.sum,axis = 0)    #按行操作,求和
A    12
B    27
dtype: int64
df.apply(np.sum,axis = 1)    #按列操作,求和
0    13
1    13
2    13
dtype: int64

pd.pivot_table函数:数据透视表,参数一为dataframe,可指定index和values。

  • 透视表是一种可以对数据动态排布并且分类汇总的表格格式。有四个最重要的参数index、values、columns、aggfunc。
  • Index就是层次字段,要通过透视表获取什么信息就按照相应的顺序设置字段。必须为数值,不能是str
  • Values可以对需要的计算数据进行筛选。
  • aggfunc参数可以设置我们对数据聚合时进行的函数操作。
  • Columns类似Index可以设置列层次字段,它不是一个必要参数,作为一种分割数据的可选方式。fill_value填充空值,margins=True进行汇总
  • 可参考:https://www.cnblogs.com/Yanjy-OnlyOne/p/11195621.html
import pandas as pd
df1 = pd.DataFrame({
    '对手':['湖人','勇士','开拓者','湖人'],
    '胜负':['胜','负','负','负'],
    '得分':[2,22,1,30],
    '助攻':[15,11,6,3],
    '命中':[8,4,2,6]
})
df1
助攻命中对手得分胜负
0158湖人2
1114勇士22
262开拓者1
336湖人30
pd.pivot_table(df1,index = ['对手'])    #指定index,其中湖人对求和后除了个数,取的平均值
助攻命中得分
对手
勇士11422
开拓者621
湖人9716
pd.pivot_table(df1,index = ['对手','胜负'])    #指定多个index
助攻命中得分
对手胜负
勇士11422
开拓者621
湖人1582
3630
pd.pivot_table(df1,index = ['胜负','对手'])      #试着交换下它们的顺序,数据结果一样:
助攻命中得分
胜负对手
湖人1582
勇士11422
开拓者621
湖人3630
pd.pivot_table(df1,index = ['胜负','对手'],values = ['命中','得分'])    #筛选需要的列数据
命中得分
胜负对手
湖人82
勇士422
开拓者21
湖人630
import numpy as np
pd.pivot_table(df1,index = ['胜负','对手'],values = ['命中','得分'],aggfunc = [np.sum,np.mean])
summean
命中得分命中得分
胜负对手
湖人8282
勇士422422
开拓者2121
湖人630630
#fill_value填充空值,margins=True进行汇总。
import numpy as np
pd.pivot_table(df1,index = ['胜负'],columns = ['对手'],values = ['得分'],aggfunc = [np.sum],fill_value=0,margins=2)   
#其中:index为行索引,columns为列索引,values为表格中的数值,aggfunc为计算方式,当为空时填充为0,margins为True时进行汇总(最后一列)
sum
得分
对手勇士开拓者湖人All
胜负
0022
2213053
All2213255
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python数据分析期末复习归纳如下: 1. Python基础知识:掌握Python语言的基本语法、数据类型、运算符、流程控制语句等基本知识点,包括变量、列、字典、字符串等。 2. Numpy库:了解Numpy库的基本使用方法,包括数组的创建、索引、切片、运算等,以及矩阵的操作、随机数生成、统计分析等。 3. Pandas库:掌握Pandas库的常用数据结构Dataframe和Series的创建、索引、切片、合并、统计分析等基本操作,以及数据清洗、缺失值处理、数据分组、透视等高级操作。 4. Matplotlib库:掌握Matplotlib库的基本绘图方法,包括线性图、散点图、柱状图、饼图等,以及子图、标签、图例等高级绘图操作。 5. Seaborn库:了解Seaborn库的常用绘图方法,包括分布图、分类图、热力图等,以及调色板、样式等高级绘图操作。 6. Scikit-learn库:掌握Scikit-learn库的常用机器学习算法,包括分类、回归、聚类等,以及模型选择、模型评估等高级操作。 7. 数据挖掘流程:了解数据挖掘的基本流程,包括数据采集、数据清洗、特征提取、建模、模型评估等,以及在Python中的实现方法。 8. 数据可视化:掌握数据可视化的基本方法和原则,包括选择合适的图形、调整图形参数、添加标签等。 9. 数据分析实践:通过实际案例进行数据分析实践,熟悉数据分析过程中的一些常见问题和解决方法。 以上就是Python数据分析期末复习的归纳。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值