Anaconda是什么

这个就不多bb了,用到时自然就理解了。

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
conda create -n 虚拟环境名字 python=3.8  # 创建虚拟环境 python=3.8 指定python版本

conda activate 虚拟环境名字 # 进入虚拟环境

conda deactivate 虚拟环境名字 # 退出虚拟环境

conda remove -n 虚拟环境名字 --all # 删除虚拟环境

# 常用镜像源
清华:https://pypi.tuna.tsinghua.edu.cn/simple
腾讯:https://mirrors.cloud.tencent.com/pypi/simple
阿里云:http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
华中理工大学:http://pypi.hustunique.com/
山东理工大学:http://pypi.sdutlinux.org/
豆瓣:http://pypi.douban.com/simple/
  • 创建虚拟环境(-n是-name)

    • conda create -n 虚拟环境名字 python=3.8
  • 进入虚拟环境

    • conda activate
  • 退出虚拟环境

    • conda deactivate 虚拟环境名字
  • 删除虚拟环境

    • conda remove -n 虚拟环境名字 –all
  • 查看所有虚拟环境

    • conda env list
  • 查看虚拟环境中的所有包

    • conda list
  • 给Anaconda添加镜像源

以后这些东西还会用到的,这里放个链接方便以后查阅:

Anaconda常用命令汇总

保姆级

Pandas介绍及Quickstart

Pandas是什么

pandas是用于数据分析的开源Python库,可以实现数据加载,清洗,转换,统计处理,可视化等功能。

csv和tsv文件格式简介

csv 和 tsv 文件都是存储一个二维表数据的文件类型。

注意:其中csv文件每一列的列元素之间以逗号进行分割,tsv文件每一行的列元素之间以\t进行分割。

所以说当你加载tsv文件的时候需要制定分割符:\t

指定分隔符:sep或者delimiter

loc函数获取指定行列的数据

基本格式

语法 说明
df.loc[[行标签1, ...], [列标签1, ...]] 根据行标签和列标签获取对应行的对应 列的数据,结果为:DataFrame
df.loc[[行标签1, ...]] 根据行标签获取对应行的所有列的数据 结果为:DataFrame
df.loc[:, [列标签1, ...]] 根据列标签获取所有行的对应列的数据 结果为:DataFrame
df.loc[行标签] 1)如果结果只有一行,结果为:Series 2)如果结果有多行,结果为:DataFrame
df.loc[[行标签]] 无论结果是一行还是多行,结果为DataFrame
df.loc[[行标签], 列标签] 1)如果结果只有一列,结果为:Series, 行标签作为 Series 的索引标签 2)如果结果有多列,结果为:DataFrame
df.loc[行标签, [列标签]] 1)如果结果只有一行,结果为:Series, 列标签作为 Series 的索引标签 2)如果结果有多行,结果为DataFrame
df.loc[行标签, 列标签] 1)如果结果只有一行一列,结果为单个值 2)如果结果有多行一列,结果为:Series, 行标签作为 Series 的索引标签 3)如果结果有一行多列,结果为:Series, 列标签作为 Series 的索引标签 4)如果结果有多行多列,结果为:DataFrame

iloc函数获取指定行列的数据

基本格式

语法 说明
df.iloc[[行位置1, ...], [列位置1, ...]] 根据行位置和列位置获取对应行的对应 列的数据,结果为:DataFrame
df.iloc[[行位置1, ...]] 根据行位置获取对应行的所有列的数据 结果为:DataFrame
df.iloc[:, [列位置1, ...]] 根据列位置获取所有行的对应列的数据 结果为:DataFrame
df.iloc[行位置] 结果只有一行,结果为:Series
df.iloc[[行位置]] 结果只有一行,结果为:DataFrame
df.iloc[[行位置], 列位置] 结果只有一行一列,结果为:Series, 行标签作为 Series 的索引标签
df.iloc[行位置, [行位置]] 结果只有一行一列,结果为:Series, 列标签作为 Series 的索引标签
df.iloc[行位置, 行位置] 结果只有一行一列,结果为单个值

loc和iloc的切片操作

基本格式

语法 说明
df.loc[起始行标签:结束行标签, 起始列标签:结束列标签] 根据行列标签范围获对应行的对应列的数据,包含起始行列标签和结束行列标签
df.iloc[起始行位置:结束行位置, 起始列位置:结束列位置] 根据行列标签位置获对应行的对应列的数据,包含起始行列位置,但不包含结束行列位置

[] 语法获取指定行列的数据

基本格式

语法 说明
df[['列标签1', '列标签2', ...]] 根据列标签获取所有行的对应列的数据,结果为:DataFrame
df['列标签'] 根据列标签获取所有行的对应列的数据 1)如果结果只有一列,结果为:Series, 行标签作为 Series 的索引标签 2)如果结果有多列,结果为:DataFrame
df[['列标签']] 根据列标签获取所有行的对应列的数据,结果为:DataFrame
df[起始行位置:结束行位置] 根据指定范围获取对应行的所有列的数据,不包括结束行位置

CodeDemo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# -*- coding: utf-8 -*-
"""
@Time : 2023/10/19 15:33
@Auth : JohnsonLiam
@Motto:What seems to us as bitter trials are often blessings in disguise.
"""
import pandas as pd

# 读取tsv文件转为DataFrame,如果不加分隔符就会报错:sep 或者 delimiter 都行
# pandas.errors.ParserError: Error tokenizing data. C error: Expected 1 fields in line 326, saw 2
china = pd.read_csv("china.tsv", delimiter='\t')
print(china)

china_df = china.set_index("year")
print(china_df)

# todo: 获取DataFrame的行标签和列标签
print(china.index)
print(china.columns)

# todo: loc函数获取指定行列的数据

# 示例1:获取行标签为 1952, 1962, 1972 行的 country、pop、gdpPercap 列的数据
print(china_df.loc[[1952, 1962, 1972], ['country', 'pop', 'gdpPercap']])
# 示例2:获取行标签为 1952, 1962, 1972 行的所有列的数据
print(china_df.loc[[1952, 1962, 1972]])
# 示例3:获取所有行的 country、pop、gdpPercap 列的数据
print(china_df.loc[:, ['country', 'pop', 'gdpPercap']])
# 示例4:获取行标签为 1957 行的所有列的数据
print(china_df.loc[1957]) # 里面加不加中括号都行
# 示例5:获取行标签为 1957 行的 lifeExp 列的数据
print(china_df.loc[[1957], ['lifeExp']])


# todo: iloc函数获取指定行列的数据

# 示例1:获取行位置为 0, 2, 4 行的 0、1、2 列的数据
print(china_df.iloc[[0, 2, 4], [0, 1, 2]])
# 示例2:获取行位置为 0, 2, 4 行的所有列的数据
print(china_df.iloc[[0, 2, 4]])
# 示例3:获取所有行的列位置为 0、1、2 列的数据
print(china_df.iloc[:, [0, 1, 2]])
# 示例4:获取行位置为 1 行的所有列的数据
print(china_df.iloc[1])
# 示例5:获取行位置为 1 行的列位置为 2 列的数据
print(china_df.iloc[1, 2])


# loc 和 iloc 的切片操作
# 有可能引起的错误: KeyError: 'Cannot get left slice bound for non-unique label: 1952' 原因:起始索引重复,或者索引混乱
# 解决方法:先对索引进行排序
df = china_df.sort_index()
print(df.loc[1952:1957, 'country':'lifeExp'])
# iloc的切片和Python中的切片一样都是左闭右开,和range一样
print(china_df.iloc[0:1, 1:3])

# [] 获取指定行列的数据
# 示例1:获取所有行的 country、pop、gdpPercap 列的数据
print(china_df[['country', 'pop', 'gdpPercap']])
# 示例2:获取所有行的 pop 列的数据
print(china_df['pop'])
# 示例3:获取前三行的数据
print(china_df[0:3])
# 示例4:从第一行开始,每隔一行获取一行数据,一共获取3行
print(china_df[0:6:2])