赞
踩
当使用 Pandas 做数据分析的时,需要读取事先准备好的数据集,这是做数据分析的第一步。Panda 提供了多种读取数据的方法:
read_csv() 用于读取文本文件
read_json() 用于读取 json 文件
read_sql_query() 读取 sql 语句的
CSV 又称逗号分隔值文件,是一种简单的文件格式,以特定的结构来排列表格数据。 CSV 文件能够以纯文本形式存储表格数据,比如电子表格、数据库文件,并具有数据交换的通用格式。CSV 文件会在 Excel 文件中被打开,其行和列都定义了标准的数据格式。
将 CSV 中的数据转换为 DataFrame 对象是非常便捷的。和一般文件读写不一样,它不需要你做打开文件、读取文件、关闭文件等操作。相反,您只需要一行代码就可以完成上述所有步骤,并将数据存储在 DataFrame 中。
import pandas as pd df = pd.read_csv("./number_data/student.csv", encoding="utf-8") print(df)
在 CSV 文件中指定了一个列,然后使用index_col
可以实现自定义索引。
import pandas as pd df = pd.read_csv("./number_data/student.csv", encoding="utf-8", index_col=["Name"]) print(df)
import pandas as pd import numpy as np # 转换salary为float类型 df = pd.read_csv("./number_data/student.csv", encoding="utf-8", dtype={'Salary': np.float64}) print(df.dtypes)
使用 names 参数可以指定头文件的名称。
import pandas as pd df = pd.read_csv("./number_data/student.csv", encoding="utf-8", names=["a","b","c","d","e"]) print(df)
文件标头名是附加的自定义名称,但是您会发现,原来的标头名(列标签名)并没有被删除,此时您可以使用header参数来删除它。
import pandas as pd df = pd.read_csv("./number_data/student.csv", encoding="utf-8", names=["a", "b", "c", "d", "e"], header=0) print(df)
skiprows参数表示跳过指定的行数。
import pandas as pd df = pd.read_csv("./number_data/student.csv", encoding="utf-8", skiprows=1) print(df)
Pandas 提供的 to_csv() 函数用于将 DataFrame 转换为 CSV 数据。如果想要把 CSV 数据写入文件,只需向函数传递一个文件对象即可。否则,CSV 数据将以字符串格式返回。
import pandas as pd data = {'Name': ['Smith', 'Parker'], 'ID': [101, 102], 'Language': ['Python', 'JavaScript']} info = pd.DataFrame(data) csv_data = info.to_csv("./number_data/student.csv")
Excel 是由微软公司开发的办公软件之一,它在日常工作中得到了广泛的应用。在数据量较少的情况下,Excel 对于数据的处理、分析、可视化有其独特的优势,因此可以显著提升您的工作效率。但是,当数据量非常大时,Excel 的劣势就暴露出来了,比如,操作重复、数据分析难等问题。Pandas 提供了操作 Excel 文件的函数,可以很方便地处理 Excel 表格。
如果您想读取 Excel 表格中的数据,可以使用 read_excel() 方法
pd.read_excel(io, sheet_name=0, header=0, names=None, index_col=None, usecols=None, squeeze=False,dtype=None, engine=None, converters=None, true_values=None, false_values=None, skiprows=None, nrows=None, na_values=None, parse_dates=False, date_parser=None, thousands=None, comment=None, skipfooter=0, convert_float=True, **kwds)
参数名称 | 说明 |
---|---|
io | 表示 Excel 文件的存储路径。 |
sheet_name | 要读取的工作表名称。 |
header | 指定作为列名的行,默认0,即取第一行的值为列名;若数据不包含列名,则设定 header = None。若将其设置 为 header=2,则表示将前两行作为多重索引。 |
names | 一般适用于Excel缺少列名,或者需要重新定义列名的情况;names的长度必须等于Excel表格列的长度,否则会报错。 |
index_col | 用做行索引的列,可以是工作表的列名称,如 index_col = '列名',也可以是整数或者列表。 |
usecols | int或list类型,默认为None,表示需要读取所有列。 |
squeeze | boolean,默认为False,如果解析的数据只包含一列,则返回一个Series。 |
converters | 规定每一列的数据类型。 |
skiprows | 接受一个列表,表示跳过指定行数的数据,从头部第一行开始。 |
nrows | 需要读取的行数。 |
skipfooter | 接受一个列表,省略指定行数的数据,从尾部最后一行开始。 |
import pandas as pd df = pd.read_excel('./number_data/student.xlsx', sheet_name="Sheet1") print(df)
通过 to_excel() 函数可以将 Dataframe 中的数据写入到 Excel 文件。
import pandas as pd # 创建DataFrame数据 info_website = pd.DataFrame({'name': ['张三', '李四', '王五', '赵六'], 'rank': [1, 2, 3, 4], 'language': ['PHP', 'C', 'PHP', 'Python'], 'url': ['www.zhangsan.com', 'c.lisi.net', 'www.wangwu.com', 'www.zhaoliu.com']}) # 创建ExcelWrite对象 writer = pd.ExcelWriter('website.xlsx') info_website.to_excel(writer) writer.save() print('输出成功')
MySQL 作为数据记录和处理的常用工具之一 ,使用pandas对MySQL进行操作
import pandas as pd import pymysql coon = pymysql.connect( host="127.0.0.1", port=3306, user="root", password="110120", db="12_class" ) sql_one = "select * from house" print(pd.read_sql(sql_one,con=coon)) sql_two = "select * from house where id > 10" print(pd.read_sql(sql_two, con=coon))
index_col
import pandas as pd import pymysql coon = pymysql.connect( host="127.0.0.1", port=3306, user="root", password="110120", db="12_class" ) sql_one = "select * from house" data = pd.read_sql(sql_one, con=coon,index_col="house_five") print(data)
将数据写入Excel
import pandas as pd import pymysql coon = pymysql.connect( host="127.0.0.1", port=3306, user="root", password="110120", db="12_class" ) sql_one = "select * from house" data = pd.read_sql(sql_one,con=coon) writer = pd.ExcelWriter('website.xlsx') data.to_excel(writer) writer.save() print('输出成功')
索引(index)是 Pandas 的重要工具,通过索引可以从 DataFame 中选择特定的行数和列数,这种选择数据的方式称为“子集选择”。
import pandas as pd import numpy as np df = pd.read_csv("./number_data/movie.csv") print(df.head()) print(df.shape) # 修改行索引 print(df.set_index("movie_title").head()) 这里的set_index的方法是将我们令的行作为我们的行索引值 # 默认值行索引 print(df.reset_index().head()) print(df.columns) # 修改行列名 # 单个进行修改 print(df.rename(columns={"color": "颜色"},index={0: "第一列"})) # 整体修改 # df.columns = ['颜色', '姓名', 'num_critic_for_reviews', 'duration', # 'director_facebook_likes', 'actor_3_facebook_likes', 'actor_2_name', # 'actor_1_facebook_likes', 'gross', 'genres', 'actor_1_name', # 'movie_title', 'num_voted_users', 'cast_total_facebook_likes', # 'actor_3_name', 'facenumber_in_poster', 'plot_keywords', # 'movie_imdb_link', 'num_user_for_reviews', 'language', 'country', # 'content_rating', 'budget', 'title_year', 'actor_2_facebook_likes', # 'imdb_score', 'aspect_ratio', 'movie_facebook_likes'] # print(df.head()) # 转化为列表之后修改 my_columns = list(df.columns) my_columns[0] = "颜色色" df.columns = my_columns print(df.head())
import pandas as pd import numpy as np df = pd.read_csv("./number_data/movie.csv") print(df.head()) print(df.columns) # 添加列 df["new_test"] = 0 print(df.head()) df["money"] = df["gross"] - df["budget"] df.insert(0, "new_money", value=df["gross"] - df["budget"]) # 传入数据 df["new_test"] = df["actor_1_facebook_likes"] + df["actor_2_facebook_likes"] print(df.head()) # 删除 print(df.drop(2, axis=0).head()) # 删除索引行 print(df.drop("color", axis="columns").head()) # 删除具体列 # 保存 df.iloc[:3, :].to_csv("./movie_new.csv") df.iloc[:3, :].to_excel("./movie_new.xlsx",sheet_name="aaa")
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。