1. pandas读写数据操作
1.1 to_csv() 相关参数
- path:路径,可以是相对路径也可以绝对路径。只填写文件名则为相对路径
- sep:分隔符,如果不写默认为 “,”。
- header:是否保留列名,0 为不保存,默认为 True。
- index:是否保留行索引,0 为不保存,默认为 True。
- columns:保留某列或者某些列数据。
- na_rep:替换空值,如果不写,默认是空。
- float_format:数据保存的格式,例:float_format=’ %.2f ’ 保留两位小数
a = np.array(range(0, 12)).reshape(3, 4)
b = np.array(range(0, 10))
print(a)
df = pd.DataFrame(a, index=list("ABC"), columns=list("WXYZ")) # DataFrame为二维数组
print(df)
df.to_csv('Result.csv', sep=";
", na_rep="NA", header=0, index=0, columns=list('WZ'))
df.to_csv('Result3.csv', na_rep="NA", header=1, index=1, columns=['Z'])
df.to_csv('D:/PycharmProjects/untitled/数据分析/测试/Result2.csv')
print("------------------------------")
se = pd.Series(b, index=list("ABCDEFGHIG"))# Series为一维数组
print(se)
se.to_csv('reason.csv')
输出:
[[ 0123]
[ 4567]
[ 89 10 11]]
WXYZ
A0123
B4567
C891011
------------------------------
A0
B1
C2
D3
E4
F5
G6
H7
I8
G9
dtype: int32
【数据分析|数据分析之pandas读写文件【to_csv,read_csv】及Numpy之间的转换】相应的DataFrame和Series还有:
- df.to_excel 写入到 excel 文件
- df.to_json 写入到 json 文件
- df.to_html 写入到 html 文件
- pd.read_csv 读取 csv 文件
- filepath_or_buffer:文件路径,必填参数。
- sep:指定分隔符,默认为:’,’
- header:指定哪一行作为表头。默认设置为 0
- index_col: 指定哪一列数据作为行索引,可以是一列,也可以多列。
- names:指定列的名称,用列表表示。
- nrows : 需要读取的行数
- skiprows : 需要忽略的行数
- pd.read_html 读取 html 文件
- pd.read_excel 读取 excel 文件
- pd.read_json 读取 json 文件
def getdistmat(coordinates):
"""
根据坐标,得出城市之间的距离矩阵
:param coordinates:
:return: distmat
"""
num = 436
# print(num)
distmat = np.zeros((num, num))# 打印一个52行52列的二维数组
for i in range(num):
for j in range(i, num):
distmat[i][j] = distmat[j][i] = geodesic((rsu_set[i]), (rsu_set[j])).m
return distmat# distmat[i][j] = distmat[j][i]表示城市i和j距离data1 = pd.DataFrame(getdistmat(rsu_set))
data1.to_csv('D:/PycharmProjects/untitled/paper/rsu_dis.csv')
df = pd.read_csv("./rsu_dis.csv", header=0, index_col=0)
# 注意看:打印的df结果、转化为csv后、因为dataframe行索引和列索引
# 注意看:怎么读取转化的二维数组
print(df)
distance_matrix = df.values
print(distance_matrix)
输出
01...434435
00.0000003975.471457...4127.86481117264.013404
.................
43517264.01340421154.198618...15911.1357940.000000
[436 rows x 436 columns][[0.3975.471457394220.34792082 ...8422.71719903
4127.86481104 17264.01340402]
[ 3975.471457390.5939.86488997 ... 11278.26042049
6323.51409593 21154.19861787]
[ 4127.864811046323.51409593713.56697923 ...4975.14520999
0.15911.13579376]
[17264.01340402 21154.19861787 16602.04503987 ... 12045.76122016
15911.135793760.]]
1.3 扩展:Numpy读取数据
data = "D:/PycharmProjects/untitled/数据分析/data.csv"
np_data= https://www.it610.com/article/np.loadtxt(data, dtype="float", delimiter="/", skiprows=1, usecols=[0, 1])
文章图片
上面的代码中已经写有Numpy转换数组的格式了,下面直接讲解pandas转Numpy数组
2. pandas转Numpy数组
# DataFrame转Numpy数组
df = pd.DataFrame(np.arange(12).reshape(3, 4))
# df.as_matrix()# 此方法已经淘汰
arr = df.values
print(df)
print("--------------------------")
print(arr)
输出:
0123
00123
14567
2891011
--------------------------
[[ 0123]
[ 4567]
[ 89 10 11]]
同理:Series转数组也可以通过values实现。
# Series转Numpy数组
data = https://www.it610.com/article/[['A', 10],
['B', 11]]
result = pd.DataFrame(data, columns=['fla', 'val'])
arr2 = result['val'].values
print(data)
print(result)
print(arr2)
print("--------------------------")
data2 = pd.Series([1, 2, 3])
arr3 = data2.values
print(arr3)
输出:
[['A', 10], ['B', 11]]
flaval
0A10
1B11
[10 11]
--------------------------
[1 2 3]
推荐阅读
- Prometheus|PromQL 计算Counter指标增长率 rate irate increase
- 人工智能|屡获权威机构认 | Smartbi入选高科技高成长企业系列三大榜单
- 举个栗子-Tableau|举个栗子~Tableau 技巧(219)(用浏览器提取 .twbx 文件中的形状)
- 数据库|MySQL数据库
- Python专栏|数据分析的常规流程
- 学生作品|tina - 鸢尾花预测
- 大数据|【新书速递】流量运营教科书
- R语言从入门到机器学习|R语言rename重命名dataframe的列名实战:rename重命名dataframe的列名(写错的列名不会被重命名)
- Pyecharts|Pyecharts 猎聘招聘数据可视化