Day2-Python-Pandas基础(Datawhale)

1. Pandas基础

import numpy as np
import pandas as pd
print("pandas的版本是:",pd.__version__)
pandas的版本是: 1.1.3

1.1 文件的读取和保存

1.1.1 文件的读取

1.1.1.1 读取csv文件

pd.read_csv() 将数据放入目录下,会减少不必要的麻烦

df_csv = pd.read_csv('data/my_csv.csv',header=None,usecols=[3,4])
df_csv
3 4
0 col4 col5
1 apple 2020/1/1
2 banana 2020/1/2
3 orange 2020/1/5
4 lemon 2020/1/7
1.1.1.2 读取txt文件

pd.read_table()

txt文件遇到分隔符非空格时,使用sep自定义分隔符号

df_txt = pd.read_table('data/my_table.txt',index_col=['col1'])
df_txt
col2 col3 col4
col1
2 a 1.4 apple 2020/1/1
3 b 3.4 banana 2020/1/2
6 c 2.5 orange 2020/1/5
5 d 3.2 lemon 2020/1/7
df_txt1 = pd.read_table('data/my_table_special_sep.txt')
df_txt1
col1 |||| col2
0 TS |||| This is an apple.
1 GQ |||| My name is Bob.
2 WT |||| Well done!
3 PT |||| May I help you?
df_t = pd.read_table('data/my_table_special_sep.txt',sep='\|\|\|\|',engine='python')
df_t
col1 col2
0 TS This is an apple.
1 GQ My name is Bob.
2 WT Well done!
3 PT May I help you?

思考:engine=‘python’ 默认是c引擎解析,如果使用python引擎,可以解析更丰富的内容;

sep使用的是正则表达式,需要将|转义。(此知识点等学完正则表达式补充)

1.1.1.3 读取excel文件

pd.read_excel

df_excel = pd.read_excel('data/my_excel.xlsx',nrows=2, parse_dates=['col5'])
df_excel
col1 col2 col3 col4 col5
0 2 a 1.4 apple 2020-01-01
1 3 b 3.4 banana 2020-01-02

公共参数:

header=None: 第一列不作为列名

index_col: 某一列或几列作为索引

usecols: 读取列的集合,默认读取所有的列

parse_dates: 需要转化为时间的列

nrows: 读取的数据行数

若在使用了header=None,usecols时填写的是新的列名

1.1.2 数据的保存

1.1.2.1 保存csv

table_name.to_csv

df_csv1 = pd.read_csv('data/my_csv.csv')  
df_csv1
col1 col2 col3 col4 col5
0 2 a 1.4 apple 2020/1/1
1 3 b 3.4 banana 2020/1/2
2 6 c 2.5 orange 2020/1/5
3 5 d 3.2 lemon 2020/1/7
df_csv1.to_csv('data/my_csv_saved_mine.csv',index=False)

注意:

(1).保存的名字重复时,原文件被覆盖

(2).保存的文件需要带文件后缀,to_csv不会默认保存为csv文件

(3).索引index一般设置为False

1.1.2.2 保存txt

table_name.to_csv

df_txt1 = pd.read_table('data/my_table.txt')
df_txt1
col1 col2 col3 col4
0 2 a 1.4 apple 2020/1/1
1 3 b 3.4 banana 2020/1/2
2 6 c 2.5 orange 2020/1/5
3 5 d 3.2 lemon 2020/1/7
df_txt1.to_csv('data/my_txt_saved_mine.txt',sep='\t',index=False)

注意:

to_csv可以保存txt文件,并可以自定义分隔符,常见的为制表符\t分隔

1.1.2.3 保存xls文件

table_name.to_excel

df_excel1 = pd.read_excel('data/my_excel.xlsx')
df_excel1
col1 col2 col3 col4 col5
0 2 a 1.4 apple 2020/1/1
1 3 b 3.4 banana 2020/1/2
2 6 c 2.5 orange 2020/1/5
3 5 d 3.2 lemon 2020/1/7
df_excel1.to_excel('data/my_excel_saved_mine.xlsx')
1.1.2.4 表格转换为markdown语言

to_markdown

首先安装tabulate包:(在shell中)pip install tabulate

import tabulate
print(df_csv1.to_markdown())
|    |   col1 | col2   |   col3 | col4   | col5     |
|---:|-------:|:-------|-------:|:-------|:---------|
|  0 |      2 | a      |    1.4 | apple  | 2020/1/1 |
|  1 |      3 | b      |    3.4 | banana | 2020/1/2 |
|  2 |      6 | c      |    2.5 | orange | 2020/1/5 |
|  3 |      5 | d      |    3.2 | lemon  | 2020/1/7 |
1.1.2.5 表格转换为latex语言

to_latex

print(df_csv1.to_latex())
\begin{tabular}{lrlrll}
\toprule
{} &  col1 & col2 &  col3 &    col4 &      col5 \\
\midrule
0 &     2 &    a &   1.4 &   apple &  2020/1/1 \\
1 &     3 &    b &   3.4 &  banana &  2020/1/2 \\
2 &     6 &    c &   2.5 &  orange &  2020/1/5 \\
3 &     5 &    d &   3.2 &   lemon &  2020/1/7 \\
\bottomrule
\end{tabular}

1.2 基本数据结构

pandas两种基本数据存储结构:一维:values的Series和二维:values的DataFrame。重点了解:属性和方法

1.2.1 Series

组成部分:

data:值

index:索引

dtype:存储类型

name:序列的名字

索引可以指定名字,默认为空

s = pd.Series(data=[100, 'a', {
   'dict1':5}], #值
             index=pd.Index(['id1', 20, 'third'], name='my_idx'),
            # 索引的值和名称
             dtype='object', #存储的类型
             name='my_name' #整个序列的名称)
s
my_idx
id1               100
20                  a
third    {'dict1': 5}
Name: my_name, dtype: object

备注:object是混合类型,存储不同数据结构;纯字符串序列也是一种object类型序列,可以使用string类型存储。

1.2.1.1属性的获取

Series_name.values:获取值

Series_name.index:获取索引

Series_name.dtype:获取存储类型

Series_name.name:获取序列名称

Series_name.shape:获取序列的长度

Series_name[index_name]:获取单个索引对应的值

s.values
array([100, 'a', {'dict1': 5}], dtype=object)
s.index
Index(['id1', 20, 'third'], dtype='object', name='my_idx')
s.dtype
dtype('O')
s.name
'my_name'
s.shape
(3,)

备注:shape的解释:shape[0]表示最外围的数组的维数,shape[1]表示次外围的数组的维数,数字不断增大,维数由外到内。Series是一维,直接代表的是元素的个数,所以显示的(3,)

x  = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[0,1,2]],[[3,4,5
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值