精华内容
下载资源
问答
  • spark DF写入csv/text

    2021-05-11 21:39:34
    DF写入CSV,要求每一列的类型为String DF写入TEXT,要求DF只有一列,且类型为String 修改DataFrame列类型的方法可以参考 1 直接按列名修改 scala> a.select(a.col("id"),a.col("username"),a.col("birthday")....

    Spark的DataFrame调用write方法写入数据时有以下几点注意

    • DF写入CSV,要求每一列的类型为String
    • DF写入TEXT,要求DF只有一列,且类型为String

    修改DataFrame列类型的方法可以参考

    1 直接按列名修改

    scala> a.select(a.col("id"),a.col("username"),a.col("birthday").cast("string").as("bir")).show
    

    2 遍历DF的所有列依次修改,适用于修改成统一的类型

    import org.apache.spark.sql.DataFrame
    import org.apache.spark.sql.functions.col
    val df: DataFrame = ...
    val columns: Array[String] = df.columns
    val df2: DataFrame = columns.foldLeft(df){
        (currentDF, column) => currentDF.withColumn(column, col(column).cast("string"))
    }
    

    3 先修改列的类型,再用select函数查找

    scala 有array:_*这样传参这种语法,就是就是把Array数组的参数转化成变长序列传入,而df的select方法也支持col*这样的变长序列。

    这样看来,SELECT的COL只需要名字一样,struct可以任意指定,也就是说DF按名查找,再按COL的struct处理数据

    val cols = colNames.map(f => col(f).cast(DoubleType))
    df.select(cols: _*).show()
    

    再写基于DF的ALS推荐算法时,遇到了DF的存储问题,解决代码如下

      def main(args: Array[String]): Unit = {
        //初始化
        val sparkConf = new SparkConf().setMaster(config("spark.cores")).setAppName("OfflineRecommonder")
        val spark = SparkSession.builder().config(sparkConf).getOrCreate()
    
        import spark.implicits._
    
        implicit val mongoConf = MongoConfig(config("mongo.uri"), config("mongo.db"))
    
    
        val ratingDS = spark.read
          .option("uri", mongoConf.uri)
          .option("collection", MONGODB_RATING_COLLECTION)
          .format("com.mongodb.spark.sql")
          .load()
          .select($"userId",$"productId",$"score" as("rating"),$"timestamp")
          .as[ProductRating]
    
        val Array(training,test) = ratingDS.randomSplit(Array(0.8,0.2))
        val als = new ALS()
          .setMaxIter(5)
          .setRegParam(0.01)
          .setRank(5)
          .setUserCol("userId")
          .setItemCol("productId")
          .setRatingCol("rating")
        val model = als.fit(training)
    
        // Evaluate the model by computing the RMSE on the test data
        // Note we set cold start strategy to 'drop' to ensure we don't get NaN evaluation metrics
        model.setColdStartStrategy("drop")
        val predictions = model.transform(test)
    
        /**
         * DF写入CSV,要求每一列的类型为String
         * DF写入Text,要求DF只有一列,且类型为String
         *
         * 1.改写DF的列类型
         *
         * 2.写入csv
         * */
        predictions.columns.foldLeft(predictions){
          (currentDF,column)=>currentDF.withColumn(column, col(column).cast("string"))
        }.limit(10).coalesce(1)
          .write
          .mode(SaveMode.Overwrite)
          .option("header",true)
          .csv("ECommerceRecommendSystem/recs/predictions.csv")
    
        /**
         * DF写入CSV,要求每一列的类型为String
         * DF写入Text,要求DF只有一列,且类型为String
         * */
        val userRecs = model.recommendForAllUsers(10)
        val newCol = userRecs.columns.map(col(_).cast("string"))
        userRecs.select(newCol:_*).limit(10).coalesce(1)
          .write
          .mode(SaveMode.Overwrite)
          .option("header",true)
          .csv("ECommerceRecommendSystem/recs/userRecs.csv")
    
        //模型评估器RegressionEvaluator用于回归的评估器,主要是计算y与y^的插值
        val evaluator = new RegressionEvaluator()
          .setMetricName("rmse") //设置真实值与预测值误差的计算方式,RMSE 均方根误差 ---sqrt ( err(i)*eer(i) / n )
          .setLabelCol("rating")//真实值
          .setPredictionCol("prediction")//预测值
        val rmse = evaluator.evaluate(predictions)
        println(s"Root-mean-square error = $rmse")
    
    
        spark.stop()
      }
    展开全文
  • 3.写入到csv文件 总结 前言 码农张! 此账号记录一些日常工作中遇到的一些问题,附解决方案 一、本文案例背景 背景:有一些相关数据,分为多张csv和excel文件,现需要对这些文件进行统计,取出需要的字段(此...

    目录

    前言

    一、本文案例背景

    二、使用步骤

    1.引入相关库函数

    2.读入数据并拼接处理

    3.写入到csv文件

    总结


    前言

    码农张!  此账号记录一些日常工作中遇到的一些问题,附解决方案


     

    一、本文案例背景

    背景:有一些相关数据,分为多张csv和excel文件,现需要对这些文件进行统计,取出需要的字段(此数据敏感,正文与数据相关使用XXX替代)。进行多表的数据拼接。最终写入到csv文件。

    二、使用步骤

    1.引入相关库函数

    import pandas as pd

    2.读入数据并拼接处理

    data_1 = pd.read_csv( 'C:\\Users\\dell\\Desktop\\XXX\\XXX\\XXX.csv',encoding='gbk') 
    data_2 = pd.read_excel( 'C:\\Users\\dell\\Desktop\\XXX\\XXX\\XXX.xlsx')
    
    #设置取的列名  此处时按列取
    column = ['columns']
    
    #取出相关数据字段
    data_1 = data_1[column]
    data_2 = data_2[column]
    
    #合并数据                                    cancat的连接方式  合并后剔除空值和缺失值并重新赋值下标
    concat_data=pd.concat([data_1,data_2],axis=0,join='outer').dropna().drop_duplicates(ignore_index=True)
    
    结果数据如下所示:
    print(concat_data) 
     

    3.写入到csv文件

    python的pandas同时也提供了多方式写出的功能,常用的如to_sql、to_excel、to_csv等等。本文使用to_csv导出到csv文件。 

    data.to_csv('C:\\Users\\dell\\Desktop\\XXXX.csv',encoding='utf-8')

    这样写出方式是最普遍最常规的方法,但是对于本文使用的数据就出现了如下的错误。写出的csv表如下:

    原因是因为pandas的to_csv底层实现原理是对一些比较长的数字通过科学计数法来写出的,会自动把后面位数变成0。这不是我们想要的。解决方法如下(将长数字转换为str类型):

    def num_out(data):
        data = str(data)+'\t'
        return data
    
    data = concat_data['XXX'].map(num_out)

    通过上面的操作,我们的长数子就完美得到了解决了!

      

     


    总结

    主要做了一些简单的统计工作,总体来说是没有太大的难度。毕竟活全是pandas干的! 哈哈哈哈

    展开全文
  • 实现的功能:通过pymysql连接MySQL数据库,查询所需数据,然后使用pandas写入到csv文件,并且写入包含数据列名。 import sys import pandas as pd import pymysql import time # 获取当前日期 day=time.strftime("%...

    实现的功能:通过pymysql连接MySQL数据库,查询所需数据,然后使用pandas写入到csv文件,并且写入包含数据列名。

    import sys
    import pandas as pd
    import pymysql
    import time
    
    csv_path=sys.argv[1]
    host=sys.argv[2]
    user=sys.argv[3]
    password=sys.argv[4]
    db=sys.argv[5]
    
    
    
    # host='59.202.45.105'
    # user='lpz_test'
    # password='lpz_test'
    # db='test'
    
    def getrel(sql):
        try:
            con = pymysql.connect(host, user, password, db)
            cur = con.cursor()  # 获取操作游标,也就是开始操作
            cur.execute(sql)  # 输入要查询的SQL
            col_result = cur.description  # 获取查询结果的字段描述
            rel = cur.fetchall()
            
            
            # 获取字段名,以列表形式保存
            columns = []
            for i in range(0, len(col_result)):
                columns.append(col_result[i][0])  
            # print(columns)
    
            cur.close()
            con.close()
            return rel,columns
        except Exception as e:
            print(e)
            print("!!!!!!!!!!!!!!请检查数据库连接信息!!!!!!!!!!!!!!")
            exit(-1)
    
    def getcsv(rel,columns):
        data1 = list(map(list, rel))
        df = pd.DataFrame(data=data1,columns=columns)  # mysql查询的结果为元组,需要转换为列表
        df.to_csv(csv_path,index=None)
    
    if __name__ == '__main__':
        sql = 'select * from table;'
        rel,columns = getrel(sql)
        getcsv(rel,columns)
    
    展开全文
  • pandas写入读取csv文件

    万次阅读 2018-07-26 15:30:44
    1.利用Pandas把列表数据写入csv文件,具体操作封装成函数,然后直接调用就行。 def insert_csv(datas): df = pd.DataFrame(datas) file_name = 'hello' df.to_csv('{}.csv'.format(file_name),encoding = "GBK...

    1.利用Pandas把列表数据写入csv文件,具体操作封装成函数,然后直接调用就行。

    def insert_csv(datas):
        df = pd.DataFrame(datas)
        file_name = 'hello'
        df.to_csv('{}.csv'.format(file_name),encoding = "GBK")
    

          注释:有可能出现写入csv文件,出现编码错误写入不了,可以修改编码:改成 gb18030编码。

                   如果要插入的数据字段不确定,可以进行追加的方式进行插入,追加插入必须要添加一个参数  modal = “a”#获取csv

              df.to_csv("my.csv", mode='a',header=False)

    2. pandas 读取的表格内容
    df = pd.read_csv('xxy_yang.csv', encoding="gbk")
    lines = list()
    #read_result:输出是一个索引,然后根据索引查出数据
    read_result = df.reset_index().T.to_dict()
    for _index in read_result:

    #获取每行的数据
      lines.append(read_result[_index])
    # 多进程加多线线程封装写入表格
    from concurrent.futures import ThreadPoolExecutor, as_completed
    from multiprocessing import Process, Manager
    # 返回的manager对象控制了一个server进程,此进程包含的python对象可以被其他的进程通过proxies来访问。从而达到多进程间数据通信且安全
    def thread_run(_tuple):
       line_list = _tuple
       #开启进程,利用的是ThreadPoolExecutor,开启100个线程
       executor = ThreadPoolExecutor(max_workers=100)
       all_tasks = [executor.submit(do_data_process, line) for line in line_list]
       data_list = list()
       for future in as_completed(all_tasks):
       result_dict = future.result()
       if result_dict:
         data_list.append(result_dict)

       #这边可以插入数据

       df = pd.DataFRame(data_list)

       df.to_csv("xx.csv")
    def do_data_process():
      #该功能是数据处理好后返回数据

      pass

    # 创建进程6个进程
    if __name__  == '__main__':

    data_list = []

    pool = list()

    with Manager() as mess:

      # 创建进程6个进程

       for start_num in range(6):

         p = Process(target=tread_run, args=((data_list[start_num::6]),))

         p.start()

         pool.append(p)

        for p in pool:

          p.join()

     

     

     

     

    展开全文
  • df.to_csv写入到csv文件 pd.read_csv读取csv文件 df.to_json写入到json文件 pd.read_json读取json文件 df.to_html写入到html文件 pd.read_html读取 html文件 df.to_excel 写入到 excel 文件 ...
  • Pandas简单写入数据到csv文件

    千次阅读 2020-10-14 21:25:37
    df = pd.DataFrame({ "学院":["电子学院","机电学院","大数据学院","软件学院","网络学院"], "2017年":[1320,1351,2251,3178,2151], "2018年":[1323,1402,2202,3180,2190], "2019年":[1466,1322,2222,3162,2122]...
  • python写入.csv文件取消空行

    千次阅读 2018-04-05 13:44:52
    今天写爬虫的时候,把爬取的数据存.csv文件中,但是文件中的数据都空了一行。 看到有人说open()中加入newline =‘’,但是却报 TypeError: ‘newline‘ is an invalid keyword argument for this function ...
  • pandas 写入保存csv时注意事项

    千次阅读 2019-09-02 09:55:33
    df.to_csv(filename1, index=None) 不然写出的csv文件会多一列来表示索引 2.fillna("unknown"),很多情况下我们都不知道文件是否为空,如果有空值的话再groupby操作中这部分数据会遗失。 ...
  • I have a list of lists like [('a', 'b', 'c'), ('d', 'e', 'f'),....]. I want to write it to a CSV file like this-a, b, cd, e, fHow do I do that?I've tried using csv.writerows but the output fil...
  • 您在使用pandasimport pandas as pddf=[2.9732676520000001, 4.0732676520000002, 4.4032676520000003]CS=[1854.1560636319559, 2540.1258143280334, 2745.9167395368572]int_peak=[0.0015852047556142669, 0....
  • 如果按默认方式写入,会得到这样的结果 如果使用 df.to_csv('myData.csv',index=False) 则可以不要索引列
  • I have a list of lists like [('a', 'b', 'c'), ('d', 'e', 'f'),....]. I want to write it to a CSV file like this-a, b, cd, e, fHow do I do that?I've tried using csv.writerows but the output fil...
  • 它可以正常工作,但是我无法将输出数据写入csv文件中我已经编写了用于对象检测的代码,并将检测的一些输出参数写入csv文件。from __future__ import divisionimport osimport cv2import numpy as npimport sys...
  • 使用scrapy框架爬取了一些汽车评价保存在csv文件中,但是直接打开时乱码了。使用pandas读取再使用to_csv()方法重新保存import pandas as pdfile_name = 'G:/myLearning/pythonML201804/spiderLearning/scrapy_...
  • I am trying to write 2D numpy array into csv file using np.savetxt.import numpy as npdata = np.array([[0,np.nan,2,3],[4,5,np.nan,7],[8,9,10,np.nan]])np.savetxt("file.csv", data, delimiter=",", fmt='%....
  • 通过pandas库进行数据操作时非常的简介易用,接下来简单实例来写入csv文件: In [1]: import pandas as pd In [2]: data = {'row1':[1,2,3,'biubiu'],'row2':[3,1,3,'kaka']} In [3]: data Out[3]: {'row1': [1, ...
  • 1. 使用 pandas 读取 CSV 文件 原始数据包含了公司员工的数据: Name Hire Date Salary Sick Days remaining Graham Chapman 03/15/14 50000.00 10 John Cleese 06/01/15 65000.00 8 Eric Idle 05/12/14...
  • 示例代码 import pandas as pd ... pd.DataFrame(columns=['f']).to_csv(f, index=False) # 去除index df1 = pd.DataFrame([1, 2, 3], columns=['f']) df2 = pd.DataFrame([4, 5, 6], columns=['f']) # 追加,
  • I am writing a pandas df to a csv. When I write it to a csv file, some of the elements in one of the columns are being incorrectly converted to scientific notation/numbers. For example, col_1 has st.....
  • 二、df.to_csv() ,df.to_excel(),xlwings写入Excel的区别  1、df.to_csv() 速度快,适合庞大数据的写入。可追加写入 ,参数为mode='a' ,追加过程需将headers = False  2、df.to_excel( ) 速度较慢。无追加...
  • pandas写入_读取csv文件

    2020-09-07 10:13:30
    # 导入实验常用的python包...# pandas数据写入到csv文件中: names = ['Bob','Jessica','Mary','Mel'] births = [968,155,77,973] DataSet = list(zip(names,births)) df = pd.DataFrame(data = DataSet ,columns=['Nam
  • Pandas 读取,写入csv文件

    万次阅读 2018-08-12 16:18:49
    读取csv文件 import numpy as np import pandas as pd from pandas import Series,DataFrame ...df=pd.read_csv('E:/python/wangyiPython/the fifth week/data/ex1.csv') df df1=pd.read_table('E:/python/...
  • Pandas 把数据写入csv

    2019-09-24 03:43:13
    Pandas 把数据写入csv from sklearn import datasets import pandas as pd iris = datasets.load_iris() iris_X = iris.data iris_y = iris.target df=pd.DataFrame(iris_y) df.to_csv(r"C:\Users\si\...
  • 将pandas DataFrame写入CSV文件

    万次阅读 2020-04-18 15:21:09
    I have a dataframe in pandas which I would like to write to a CSV file. 我有一个熊猫数据框,我想将其写入CSV文件。 I am
  • python数据写入CSV

    2020-09-09 16:16:14
    python代码中将数据写入CSV表格有两种办法:pandas和CSV。 下面我将介绍什么时候适合使用pandas,什么时候适合使用CSV库。主要区别是一个按行存储方便,一个按列存取方便。 1.按列存数据(使用pandas) 假设第一列为...
  • 我们越来越多的使用pandas进行数据处理,有时需要向一个已经存在的csv文件写入数据,传统的方法之前我也有些过,向txt,excel文件写入数据,传送门:Python将二维列表(list)的数据输出(TXT,Excel)pandas to_csv...
  • python读取与写入csv EXCEK HDF 文件

    千次阅读 2017-07-23 18:31:27
    一. 数据文件  pd指pandas简称,df指DataFrame对象。 1. csv ...写入 df.to_csv('foo.csv') 2. HDF5 读取 pd.read_hdf('foo.h5', 'df') 写入 df.to_hdf('foo.h5', 'df') 3. Excel 读取 pd.re
  • 分析结果循环写入csv

    2020-06-17 23:32:57
    30户的暖气的分析结果复制粘贴下来发给队友 (好像是有点多了一个对话框都过不去) ... #先写入columns_name writer.writerow(['index','住户','模型权重','截距','回归方程','训练集R^2','测试集R^2','均方误差(MSE)
  • I got two questions on reading and writing Python objects from/to Azure blob.1) Can someone tell me how to write Python dataframe as csv file directly into Azure Blob without storing it locally?...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,691
精华内容 3,476
关键字:

df写入到csv