Numpy和Pandas等操作总结

文件IO

一般拿到的都是CSV的数据,我们一般用pandas读取这些数据

CSV操作

读csv

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
data = pd.read_csv('student_scores.csv')

# 分割符sep 默认为':'
data = pd.read_csv('student_scores.csv', sep=':')

# 不需要表头header
data = pd.read_csv('student_scores.csv', header=0)

# 指定要哪几列
labels = ['id', 'name', 'attendance', 'hw', 'test1', 'project1', 'test2', 'project2', 'final']
df = pd.read_csv('student_scores.csv', names=labels)

# 只读前n行
data = pd.read_csv('student_scores.csv', nrows = 20)

# 指定数据类型
df = pd.read_csv('student_scores.csv', dtype={'test1':np.float64,'name':str})

# 跳过损坏的数据
data = pd.read_csv('student_scores.csv', error_bad_lines=False)

# 编码
data = pd.read_csv('student_scores.csv', encoding="utf -8")

# 指定哪一列是索引
data = pd.read_csv('student_scores.csv', index_row=0)

写csv

1
2
3
4
df_powerplant.to_csv('data_edited.csv')

# 不要索引
df_powerplant.to_csv('data_edited.csv', index=False)

各色格式

格式
CSV read_csv to_csv
Excel read_excel to_excel
JSON read_json to_json
HTML read_html to_html
clipboard read_clipboard to_clipboard
XML read_xml to_xml
Markdown to_markdown

SQL

from https://www.gairuo.com/p/pandas-io

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 需要安装 sqlalchemy 库
from sqlalchemy import create_engine
# 创建数据库对象,sqlite 内存模式
engine = create_engine('sqlite:///:memory:')
# 把表名为 data 的表数据拿出来
with engine.connect() as conn, conn.begin():
data = pd.read_sql_table('data', conn)

# data
# 将数据写入
data.to_sql('data', engine)
# 大量写入
data.to_sql('data_chunked', engine, chunksize=1000)
# 使用 sql 查询
pd.read_sql_query('SELECT * FROM data', engine)
# 使用 sql 查询后直接指定数据类型,1.3.0+
pd.read_sql_query('SELECT * FROM data', dtype={'a': np.float64, 'b': 'str', 'c': int})

基本操作

可能有点乱,后面再补

pandas index

查看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
df = pd.read_excel('data.xlsx')

# 头几条 尾几条
df.head(10)
df.tail(5)

# 看几条
df.sample(3)

# 形状 返回的是数组
df.shape()

# 基本信息
df.info()

# 数据类型
df.dtypes()

# 数据量
df.size()

# 所有值变为列表矩阵
df.to_numpy()

统计

用pandas统计

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
# 统计每一列
df.describe()

df.mean() # 返回所有列的均值
df.mean(1) # 返回所有行的均值,下同
df.corr() # 返回列与列之间的相关系数
df.count() # 返回每一列中的非空值的个数
df.max() # 返回每一列的最大值
df.min() # 返回每一列的最小值
df.abs() # 绝对值
df.median() # 返回每一列的中位数
df.std() # 返回每一列的标准差, 贝塞尔校正的样本标准偏差
df.var() # 无偏方差
df.sem() # 平均值的标准误差
df.mode() # 众数
df.prod() # 连乘
df.mad() # 平均绝对偏差
df.cumprod() # 累积连乘,累乘
df.cumsum(axis=0) # 累积连加,累加
df.nunique() # 去重数量,不同值的量
df.idxmax() # 每列最大的值的索引名
df.idxmin() # 最小
df.cummax() # 累积最大值
df.cummin() # 累积最小值
df.skew() # 样本偏度 (第三阶)
df.kurt() # 样本峰度 (第四阶)
df.quantile() # 样本分位数 (不同 % 的值)

用numpy统计

但我更倾向于先to_numpy再处理

生成

1
2
3
4
5
6
7
8
9
10
11
12
np.arange(10, 25, 5, float)
# start(include) stop(exclude) step dtype
# [10, 15, 20]

np.linspace(1, 10, 4)
# start stop num endpoint(include stop or not) dtype
# 等差
# [1, 4, 7, 10]

numpy.logspace(1, 2, num=2)
# start(start from base^start) stop(end at base^stop) num endpoint(include stop or not) base(底数默认10) dtype
# 等比

查看

关于ndarray的axis参数

Numpy

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 创建15个元素的数组,形状修改成 3 行 5 列
a = np.arange(15).reshape(3, 5)
a
'''
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
'''

a.shape # 形状
# (3, 5)

a.ndim # 维数
# 2

a.size # 大小,元素数
# 15

未完待续。。。

https://www.gairuo.com/p/numpy-ndarray-object

方法 说明
all([axis, out, keepdims]) 如果所有元素的布尔计算结果都为 True,则返回 True
any([axis, out, keepdims]) 如果元素的任何元素的布尔值为 True,则返回 True,否则为 False
argmax([axis, out]) 沿给定轴返回最大值的索引
argmin([axis, out]) 沿给定轴返回最小值的索引
argpartition(kth[, axis, kind, order]) 返回将对此数组进行分区的索引
argsort([axis, kind, order]) 返回将对此数组进行排序的索引
astype(dtype[, order, casting, subok, copy]) 强制转换为指定类型后返回数组的副本
byteswap([inplace]) 交换数组元素的字节
choose(choices[, out, mode]) 使用索引数组从一组选项构造新数组
clip([min, max, out]) 返回值限制为 [min,max] 的数组
compress(condition[, axis, out]) 沿给定轴返回此数组的选定切片
conj() 复共轭所有元素
conjugate() 按元素返回复共轭
copy([order]) 返回数组的副本
cumprod([axis, dtype, out]) 返回元素沿给定轴的累积
cumsum([axis, dtype, out]) 返回给定轴上元素的累加
diagonal([offset, axis1, axis2]) 返回指定的对角线
dot(b[, out]) 两个数组的点积
dump(file) 将数组的 pickle 转储到指定的文件。
dumps() 以字符串形式返回数组的 pickle
fill(value) 用标量值填充数组
flatten([order]) 返回折叠为一维的数组的副本
getfield(dtype[, offset]) 以特定类型返回给定数组的字段
item(*args) 将数组的元素复制到标准 Python 标量并返回它
itemset(*args) 将标量插入数组(如果可能,标量将被转换为数组的数据类型)
max([axis, out, keepdims, initial, where]) 沿给定轴返回最大值
mean([axis, dtype, out, keepdims]) 返回给定轴上数组元素的平均值
min([axis, out, keepdims, initial, where]) 沿给定轴返回最小值
newbyteorder([new_order]) 返回以不同字节顺序查看相同数据的数组
nonzero() 返回非零元素的索引
partition(kth[, axis, kind, order]) 重新排列数组中的元素,使第k个位置的元素的值位于排序数组中的位置
prod([axis, dtype, out, keepdims, initial, …]) 返回数组元素在给定轴上的乘积
ptp([axis, out, keepdims]) 沿给定轴的峰间(最大-最小)值
put(indices, values[, mode]) 设置 a.flat[n]=索引中所有 n 的值 [n]
ravel([order]) 返回展平数组
repeat(repeats[, axis]) 重复数组的元素
reshape(shape[, order]) 返回包含具有新形状的相同数据的数组
resize(new_shape[, refcheck]) 更改阵列的形状和大小
round([decimals, out]) 返回 a,每个元素四舍五入到给定的小数位数
searchsorted(v[, side, sorter]) 找到v元素应该插入a中以保持顺序的索引
setfield(val, dtype[, offset]) 将值放入由数据类型定义的字段中的指定位置
setflags([write, align, uic]) 分别设置数组标志 WRITEABLE、ALIGNED、(WRITEBACKIFCOPY和UPDATEIFCOPY)
sort([axis, kind, order]) 对数组进行排序并替换
squeeze([axis]) 从形状中删除一维条目
std([axis, dtype, out, ddof, keepdims]) 返回数组元素沿给定轴的标准偏差
sum([axis, dtype, out, keepdims, initial, where]) 返回给定轴上数组元素的总和
swapaxes(axis1, axis2) 返回交换了axis1和axis2的数组视图
take(indices[, axis, out, mode]) 返回由给定索引处的元素组成的数组
tobytes([order]) 构造包含数组中原始数据字节的 Python 字节
tofile(fid[, sep, format]) 将数组作为文本或二进制(默认)写入文件
tolist() 以Python标量的a.ndim-levels深度嵌套列表的形式返回数组
tostring([order]) tobytes的兼容性别名,具有完全相同的行为
trace([offset, axis1, axis2, dtype, out]) 返回沿数组对角线的和
transpose(*axes) 返回轴已转置的数组视图
var([axis, dtype, out, ddof, keepdims]) 返回数组元素沿给定轴的方差
view([dtype][, type]) 具有相同数据的数组的新视图
  • Copyrights © 2018-2022 Haojia Zhu
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信