Pandas 常用命令笔记 (Pandas Cheat Sheet)

峨眉山月半轮秋,影入平羌江水流。

——《峨眉山月歌》唐/李白

最近进行数据处理和清洗之类的dirty work,医院方面的数据导出格式为Excel 2007(.xlsx),pandas轮子可以直接读取excel,美滋滋。记录一下中间用到的一些pandas常用命令。

如何使用pandas 读写 excel

Pandas 读写excel,除了CSV文件,使用Excel工作表存放列表形式的数据也很常见,Pandas定义了两个API函数来专门处理Excel文件:read_excel()和to_excel()。read_excel()函数能够读取Excel 2003(.xls)和Excel 2007(.xlsx)两个类型的文件,该函数之所以能够读取Excel,是因为它整合了xlrd模块。

读取

  1. 要读取excel文件中的数据,并将其转换为DataFrame对象,只需要使用read_excel()函数即可,如下所示:
1
2
3
4
import pandas as pd

frame = pd.read_excel("data.xlsx")
print(frame)
  1. 如上所见,读取excel时,默认返回的DataFrame对象包含第一个工作表中的数据。若要读取第二个工作表中的数据,需要用第二个参数指定工作表的名称或工作表的序号或索引,如下所示:
1
2
3
4
5
6
7
import pandas as pd

frame = pd.read_excel("data.xlsx", "Sheet2")
# 或者使用序号表示sheet
frame = pd.read_excel("data.xlsx", 1)
# 注意sheet的排序一样从0开始,这里1对应上面的sheet2
print(frame)
  1. 根据原始数据排列方式的不同,有时不需要把第1行作为列名,读取Excel那就没有列名,需增加参数:header=None
1
2
3
4
import pandas as pd

frame = pd.read_excel("data.xlsx", 0, header=None)
print(frame)

写入

上述操作也适用于Excel写操作,将DataFrame对象转换为Excel,如下所示:

1
2
3
4
5
6
7
8
9
10
import pandas as pd
import numpy as np

frame = pd.DataFrame(
np.random.random((4, 4)),
index=["exp1", "exp2", "exp3", "exp4"],
columns=["Jan", "Fab", "Mar", "Apr"],
)
print(frame)
frame.to_excel("data.xlsx")

工作目录中会生成一个包含数据的新Excel文件。

Pandas的行列读写操作

  1. 读取指定的单行,数据会存在列表里面
1
2
3
4
5
6
7
import pandas as pd

df = pd.read_excel("data.xlsx")
# 这个会直接默认读取到这个Excel的第一个表单
data = df.ix[0].values
# 0表示第一行 这里读取数据并不包含表头,要注意哦!
print(data)
  1. 读取指定的多行,数据会存在嵌套的列表里面
1
2
3
4
5
6
7
import pandas as pd

df = pd.read_excel("data.xlsx")
# 这个会直接默认读取到这个Excel的第一个表单
data = df.ix[[1, 2]].values
# 读取指定多行的话,就要在ix[]里面嵌套列表指定行数
print(data)
  1. 读取指定的行列
1
2
3
4
5
6
7
import pandas as pd

df = pd.read_excel("data.xlsx")
# 这个会直接默认读取到这个Excel的第一个表单
data = df.ix[1, 2]
# 读取第一行第二列的值,这里不需要嵌套列表
print(data)
  1. 读取指定的多行多列值
1
2
3
4
5
6
7
import pandas as pd

df = pd.read_excel("data.xlsx")
# 这个会直接默认读取到这个Excel的第一个表单
data = df.ix[[1, 2], ["red", "green"]].values
# 读取第一行第二行的title以及data列的值,这里需要嵌套列表
print(data)
  1. 获取所有行的指定列
1
2
3
4
5
6
7
import pandas as pd

df = pd.read_excel("data.xlsx")
# 这个会直接默认读取到这个Excel的第一个表单
data = df.ix[:, ["red", "green"]].values
# 读取第一行第二行的title以及data列的值,这里需要嵌套列表
print(data)
  1. 获取行号并打印输出
1
2
3
4
5
import pandas as pd

df = pd.read_excel("data.xlsx")
# 这个会直接默认读取到这个Excel的第一个表单
print(df.index.values)
  1. 获取列名并打印输出
1
2
3
4
5
import pandas as pd

df = pd.read_excel("data.xlsx")
# 这个会直接默认读取到这个Excel的第一个表单
print(df.columns.values)

Pandas和Numpy数据格式相互转换

  1. dataframe转换为np.array
1
2
3
4
5
6
import pandas as pd

df = pd.read_excel("data.xlsx")
# df-->pandas dataframe数据格式
df = df.values
# df-->numpy array数据格式
  1. np.array转换为dataframe
1
2
3
4
5
6
7
import pandas as pd
import numpy as np

df = np.random.rand(4, 4)
# df-->numpy array数据格式
df = pd.DataFrame(df)
# df-->pandas dataframe数据格式

Reference

  1. https://pandas.pydata.org/
  2. https://pandas.pydata.org/docs/
  3. https://blog.csdn.net/luguanyou/article/details/90488634