如何使用Python数据解决翻转问题

3

假设我有一个csv文件,我想使用pyplot和pandas在Python中导入并绘制图表。

1,2
2,4
3,3
4,4
5,6
6,3
7,5
8,6
1,3
2,5
3,7
4,4
5,3
6,5
7,4
8,5
1,3
2,2
3,5
4,4
5,3
6,5
7,6
8,7

正如您所见,第一列在数字8处翻转。我该如何消除这种翻转现象,使其看起来像这样:

1,2
2,4
3,3
4,4
5,6
6,3
7,5
8,6
9,3
10,5
11,7
12,4
13,3
14,5
15,4
16,5
17,3
18,2
19,5
20,4
21,3
22,5
23,6
24,7

我尝试使用for循环搜索整个列,并记录每次发现一个比上一个数字小的数字……这必须是一个溢出!我正在遍历整个数据集(其中有95,000个元素!),当我看到当前项目大于上一个项目时,我将其乘以一个计数器……当这样做错误时,计数器会递增,然后加到当前条目中,直到检测到另一个溢出。 但是,我做错了什么,我不确定是什么...我的索引在两端出现问题.. Pythonic的方法是如何搜索这个混乱的数据?

第一列的数字是否连续?如果是这样,为什么不忽略它呢?因为看起来你已经知道第一列应该是什么了。可以尝试使用以下代码:pd.read_csv('data.csv', usecols=[1]) - Gerges
3个回答

1

让我们甚至不导入第一列,并让数据帧的默认范围索引作为您的x轴与pandas df.plot一起使用。

from io import StringIO
csv_file = StringIO("""
1,2
2,4
3,3
4,4
5,6
6,3
7,5
8,6
1,3
2,5
3,7
4,4
5,3
6,5
7,4
8,5
1,3
2,2
3,5
4,4
5,3
6,5
7,6
8,7""")

df = pd.read_csv(csv_file, header=None, usecols=[1])

df.plot()

输出: 在此输入图片描述


1
I wanted to give a mathematical solution... (我想提供一个数学解决方案...)
read my csv (读取我的csv文件)
df

    a  b
0   1  2
1   2  4
2   3  3
3   4  4
4   5  6
5   6  3
6   7  5
7   8  6
8   1  3
9   2  5
10  3  7
11  4  4
12  5  3
13  6  5
14  7  4
15  8  5
16  1  3
17  2  2
18  3  5
19  4  4
20  5  3
21  6  5
22  7  6
23  8  7

然后使用 cumcount 进行 groupby。将新的 cumcount 乘以 8 并加到第一列。
df.a += df.groupby('a').cumcount() * 8

df

     a  b
0    1  2
1    2  4
2    3  3
3    4  4
4    5  6
5    6  3
6    7  5
7    8  6
8    9  3
9   10  5
10  11  7
11  12  4
12  13  3
13  14  5
14  15  4
15  16  5
16  17  3
17  18  2
18  19  5
19  20  4
20  21  3
21  22  5
22  23  6
23  24  7

0

当您通过Pandas导入文件时,您的数据框创建的索引应该已经提供了您正在寻找的连续整数列表。只需将索引绘制为第二列。

import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("Filename.csv")
plt.plot(list(df.index),list(df['column_2']))
plt.show()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接