数据分析|数据分析之pandas读写文件【to_csv,read_csv】及Numpy之间的转换

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 文件
1.2 pandas读取文件操作
  • 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])

数据分析|数据分析之pandas读写文件【to_csv,read_csv】及Numpy之间的转换
文章图片

上面的代码中已经写有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]

    推荐阅读