需要使用的数据
数据learn_pandas
Pandas基础
使用到的数据如下所示,可以将其保存为不同的文件以供练习
col1,col2,col3,col4,col5
2,a,1.4,apple,2020/1/1
3,b,3.4,banana,2020/1/2
6,c,2.5,orange,2020/1/5
5,d,3.2,lemon,2020/1/7
文件的读取和写入
读取csv、excel和txt文件
# 读取csv文件
csv_data = pd.read_csv("data/my_csv.csv")
print(csv_data)
# 读取excel文件
excel_data = pd.read_excel("data/my_excel.xlsx")
print(excel_data)
# 读取txt文件
table_data = pd.read_table("data/my_table.txt")
print(table_data)
这里有一些常用的公共参数, header=None
表示第一行不作为列名,index_col
表示把某一列或几
列作为索引, usecols
表示读取列的集合,默认读取所有的列, parse_dates
表示需要转化为时间的
列, nrows
表示读取的数据行数。上面这些参数在上述的三个函数里都可以使用。
第一行不做索引
csv_data_no_head = pd.read_csv("data/my_csv.csv", header=None)
print(csv_data_no_head)
选取单独列作为索引
csv_data_choice_col = pd.read_csv("data/my_csv.csv", index_col=['col1', 'col2'])
print(csv_data_choice_col)
指定读取的列
csv_data_choice_col_2 = pd.read_csv("data/my_csv.csv", usecols=['col1', 'col2'])
print(csv_data_choice_col_2)
处理时间
csv_data_time = pd.read_csv("data/my_csv.csv", parse_dates=['col5'])
print(csv_data_time)
选择读取的行数
csv_data_rows = pd.read_csv("data/my_csv.csv", nrows=3)
print(csv_data_rows)
数据的写入
一般在数据写入中,最常用的操作是把 index
设置为False
,特别当索引没有特殊意义的时候,这样
的行为能把索引在保存的时候去除。
df_csv.to_csv('data/my_csv_saved.csv', index=False)
df_excel.to_excel('data/my_excel_saved.xlsx', index=False)
pandas
中没有定义to_table
函数,但是 to_csv
可以保存为 txt 文件,并且允许自定义分隔符,
常用制表符 \t 分割:
df_txt.to_csv('data/my_txt_saved.txt', sep='\t', index=False)
基本数据结构
pandas
中具有两种基本的数据存储结构,存储一维values
的 Series
和存储二维values
的
DataFrame
,在这两种结构上定义了很多的属性和方法。
Series
Series
一般由四个部分组成,分别是序列的值 data
、索引index
、存储类型 dtype
、序列的名字
name
。其中,索引也可以指定它的名字,默认为空。
s = pd.Series(data=[100, 'a', {
"name": "Jack"}],
index=pd.Index(["ID", 20, 'third'], name="my_idx"),
dtype='object',
name='my_name')
注意: object 代表了一种混合类型,正如上面的例子中存储了整数、字符串以及 Python 的字典数据结构。
对于这些属性,可以通过 .
的方式来获取:
# 获取值
print(s.values)
# 获取 索引
print(s.index)
# 获取 数据类型
print(s.dtype)
# 获取列名
print(s.name)
# 获取长度
print(s.shape)
DataFrame
DataFrame
在 Series
的基础上增加了列索引。
df = pd.DataFrame(data={
'col_0': [1, 2, 3], 'col_1': list('abc'),
'col_2': [1.2, 1.3, 1.4]},
index=['row_%d' % i for i in range(3)])
在 DataFrame
中可以用[col_name]
与 [col_list]
来取出相应的列与由多个列组成的表,结果分
别为Series
和DataFrame
:
# 获取第一列,只获取列的时候就是一个Series
print(df['col_2'])
# 获取第一二两列
print(df[['col_1', 'col_2']])
</